UTF-8 проблемы PHP/MySQL
Я всегда использовал кодировку ISO-8859-1, но сейчас перехожу к UTF-8.
К сожалению, я не могу заставить его работать.
Моя база данных MySQL - UTF-8, мой PHP-документ закодирован в UTF-8, я установил кодировку UTF-8, но она все еще не работает.
(это специальные символы, такие как æ/ø/å, которые не работают)
Надеюсь, вы, ребята, можете помочь!
7 ответов
Убедитесь, что соединение с вашей базой данных также использует этот набор символов:
$conn = mysql_connect($server, $username, $password);
mysql_set_charset("UTF8", $conn);
Согласно документации mysql_set_charset
на php.net:
Note:
This is the preferred way to change the charset. Using mysql_query() to execute
SET NAMES .. is not recommended.
Смотрите также: http://nl3.php.net/manual/en/function.mysql-set-charset.php
Проверьте набор символов вашего текущего соединения с:
echo mysql_client_encoding($conn);
Смотрите также: http://nl3.php.net/manual/en/function.mysql-client-encoding.php
Если вы сделали это и добавили странные символы в свою таблицу, вы увидите, что она отображается правильно.
Не забудьте также установить кодировку соединения в utf8.
В ext\mysqli do$mysqli->set_charset("utf8")
В ext\mysql domysql_set_charset("utf8")
С другими расширениями БД вам может потребоваться выполнить запрос какSET NAMES 'utf8'
Еще некоторые подробности о кодировании соединения в MySQL
Как отмечают другие, также помогает убедиться, что ваш исходный код имеет кодировку utf-8. Обратите особое внимание на отсутствие BOM (Byte Order Mark) - она будет отправлена в браузер перед выполнением любого кода, поэтому использование заголовков или сеансов станет невозможным.
После подключения к БД выполните запрос SET NAMES UTF8
$db = new db(...);
$db->query('set name utf8');
и добавьте этот тег в заголовок
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
У вас есть эта ошибка? MySql SELECT UNION Неверное сочетание параметров сортировки Ошибка? Просто установите весь MySQL на UTF 8, то
SET character_set_connection = utf8;
Попробуйте это после подключения к MySQL:
mysql_query("SET NAMES 'utf8'");
И кодировать PHP-документ в UTF-8 без спецификации.
У меня была такая же проблема, но теперь она решена. Вот решение:
1-е: обновить таблицу ur ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2-й: добавьте это в раздел head HTML-кода:
С уважением, Салеха А.Латиф
В настоящее время PDO является рекомендуемым способом использования mysql. При этом вы должны использовать строку подключения для установки кодировки. Например: "mysql:host=$host;dbname=$db;charset=utf8"