UTF-8 проблемы PHP / MySQL - PullRequest
       0

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

11 голосов
/ 07 января 2011

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

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

Моя база данных MySQL - UTF-8, мой PHP-документ закодирован в UTF-8, я установил кодировку UTF-8, но она все еще не работает.

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

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

Ответы [ 7 ]

20 голосов
/ 07 января 2011

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

$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

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

9 голосов
/ 07 января 2011

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

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

В ext \ mysql do mysql_set_charset("utf8")

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

Некоторые дополнительные сведения о кодировке соединений в MySQL

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

2 голосов
/ 07 января 2011

После подключения к БД, выполните запрос SET NAMES UTF8

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

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

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
1 голос
/ 17 ноября 2015

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

1 голос
/ 25 апреля 2013

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

1-е: обновление таблицы ALTER TABLE tbl_name DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;

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

С уважением Салеха А.Латиф

1 голос
/ 07 января 2011

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

mysql_query("SET NAMES 'utf8'");

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

1 голос
/ 07 января 2011

У вас есть эта ошибка?MySql SELECT UNION Неверное сочетание параметров сортировки Ошибка?Просто установите весь MySQL на UTF 8, а затем

SET character_set_connection = utf8;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...