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"

Другие вопросы по тегам