Я пытаюсь сохранить некоторые арабские данные в базе данных mysql. Я установил html-кодировку html как 'utf8'
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
MySQL charset установлен в: UTF-8 Unicode (utf8)
Настройка сопоставления MySQL установлена на: utf8_general_ci
Для сопоставления базы данных и таблицы задано значение: utf8_general_ci
Кроме того, в моем php-коде я использовал $mysqli->set_charset("utf8")
чтобы гарантировать, что charset установлен в ut8, но ничего не работает, я отправляю свои данные в php-скрипт, используя html-форму, где enctype is: enctype="multipart/form-data"
потому что в этой форме я также загружаю изображение
Странно то, что когда я пишу свой запрос непосредственно в mysql, арабские символы хранятся правильно без проблем, но когда я использую php-запрос для хранения данных, все символы хранятся в неправильной кодировке кодировки
Какие-либо предложения ?
Странно, это должно сработать!
Попытайтесь добавить эти строки после успешного подключения к базе данных:
$mysqli->query("SET NAMES 'utf8'"); $mysqli->query("SET CHARACTER SET utf8");
Например:
$mysqli = @new mysqli('DB_HOST', 'DB_USER', 'DB_PASS', 'DB_NAME'); if($mysqli->connect_errno) die('Connection Error!'); else{ $mysqli->query("SET NAMES 'utf8'"); $mysqli->query("SET CHARACTER SET utf8"); }
И включите эти теги META в раздел главы вашей php-страницы:
<meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Браузеры будут игнорировать <meta http-equiv ...>
если присутствует HTTP-заголовок. Попробуйте положить это вверху страницы php:
header("Content-Type: text/html; charset=UTF-8");
сохраните этот файл на веб-сайте ur, htdocs как «dbh.php», затем включите его в верхней части страницы индекса, набрав <?php include 'dbh.php';?>
и вы готовы к работе.
<?php $conn = mysqli_connect("localhost", "root", "", "database name"); if(!$conn){ die("connection failed: ".mysqli_connect_error()); }else{ $conn->query("SET NAMES 'utf8'"); $conn->query("SET CHARACTER SET utf8"); }
Вы можете попробовать это. Он должен работать
<?php $conn = mysqli_connect(<host>, <user name>, <password>, <database name>); if(!$conn){ die("could not connect: ".mysqli_connect_error()); }else{ mysqli_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn); } ?>