Проблемы UTF-8 PHP/MySQL

Я всегда использовал кодировку ISO-8859-1, но теперь я перехожу к UTF-8.

К сожалению, я не могу заставить его работать.

My MySQL DB UTF-8, мой PHP-документ закодирован в UTF-8, я устанавливаю кодировку UTF-8, но она по-прежнему не работает.

(это специальные символы, такие как æ/ø/å, что не работает)

Надеюсь, вы, ребята, можете помочь!

Ответ 1

Убедитесь, что соединение с вашей базой данных также использует этот набор символов:

$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

Если вы сделали эти вещи и добавили странные символы в свою таблицу, вы увидите, что она отображается правильно.

Ответ 2

Не забудьте также установить кодировку соединения в utf8.

В ext\mysqli do $mysqli->set_charset("utf8")

В ext\mysql do mysql_set_charset("utf8")

С другими расширениями db вам может потребоваться выполнить запрос типа SET NAMES 'utf8'

Дополнительная информация о кодировке соединений в MySQL

Как отмечают другие, убедитесь, что ваш исходный код также закодирован в utf-8. Обратите особое внимание на отсутствие спецификации (Byte Order Mark) - она ​​будет отправлена ​​в браузер до того, как будет выполнен какой-либо код, поэтому использование заголовков или сеансов станет невозможным.

Ответ 3

После подключения к db запустите запрос SET NAMES UTF8

$db = new db(...);
$db->query('set name utf8');

и добавьте этот тег в заголовок

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

Ответ 4

У вас есть эта ошибка? MySql SELECT UNION Недопустимое смешивание коллажей Ошибка? Просто установите для вас весь mysql в utf 8, затем

SET character_set_connection = utf8;

Ответ 5

Попробуйте это после подключения к mysql:

mysql_query("SET NAMES 'utf8'");

И закодируйте PHP-документ в UTF-8 без спецификации.

Ответ 6

У меня была та же проблема, но теперь она решена. Вот решение:

1st: обновить таблицу ur ALTER TABLE tbl_name УСТАНОВКА ПО УМОЛЧАНИЮ utf8 COLLATE utf8_general_ci;

второй: добавьте это в раздел главы HTML-кода:

Отношения Салеха А.Латиф

Ответ 7

В настоящее время PDO является рекомендуемым способом использования mysql. С этим вы должны использовать строку подключения для установки кодировки. Например: "mysql: host = $host; dbname = $db; charset = utf8"