MySQL сопоставление и конфликт PHP-кодировки - PullRequest
0 голосов
/ 09 мая 2011

У меня есть набор датского текста, взятого из латинской базы данных MySQL, и он отображается правильно при отображении в PHP Проблема начинается, когда мне нужно повторить некоторые другие датские символы, которые не взяты из базы данных.

На самом деле я вывожу заголовок

Content-Type: text/html; charset=iso-8859-1

, чтобы также позволить корректно отображать незапрошенные символы.

Проблема в том, что когда я делаю, запрашиваемые символы отображаются неправильно.

Ответы [ 2 ]

3 голосов
/ 09 мая 2011

То, что данные хранятся в таблице с сортировкой по латинице 1, не означает, что она кодируется по латинице 1. Это связано с тем, что MySQL не выполняет никакого преобразования символов, когда настройка соединения SET NAMES совпадает с настройкой сопоставления.

Я подозреваю, что у вас есть несколько символов UTF8, хранящихся в базе данных latin1, что запутывает проблему.

Для получения дополнительной помощи, пожалуйста, вы можете добавить детали:

  • MySQL соединение, которое вы установили
  • Сведения о происхождении "незапрошенных" символов
0 голосов
/ 09 мая 2011

Использовать юникод.UTF-8 => правильный путь.

Итак, установите utf8_unicode_ci в базе данных, UTF-8 как кодировку страницы, а перед вашим запросом установите mysql_query ("SET NAMES UTF8");

...