2012-03-28 4 views
0

У меня есть таблица MySQL & поля, которые все установлены в UTF-8. Дело в том, что предыдущий PHP-скрипт, который отвечал за запись базы данных, использовал какую-то другую кодировку, не уверен, находится ли она в самом скрипте, в подключении MySQL или где-то еще. Результат состоит в том, что, хотя поля таблицы & установлены в UTF-8, мы видим неправильные символы вместо китайского. Похоже, что:PHP MySQL Chinese UTF-8 Issue

enter image description here

Теперь, предыдущие сценарии (которые отвечали за написание и испорченные данные), могут читать хорошо по какой-то причине, но мой новый сценарий, который все закодированы в UTF -8, показывает символы, такие как ½ ©. Как это можно исправить?

+1

Хм, вы пытались прочитать данные и проверить их с помощью функции [mb_detect_encoding] (http://php.net/manual/en/function.mb-detect-encoding.php)? Попробуйте, возможно, вы сможете узнать, что такое оригинальная кодировка. – Wh1T3h4Ck5

+1

hmm yup играл с ним немного, но я думаю, что теперь он решил, просто добавил mysql-запрос с 'SET NAMES latin1', и он выглядит нормально. – Broshi

ответ

0

По его словам, у вас есть столбец utf8, но вы пишете на него и читаете его, используя соединение latin1, поэтому то, что на самом деле хранится в таблице, неправильно закодировано. Ваша проблема в том, что когда вы читаете из таблицы с использованием соединения utf8, вы видите данные, которые на самом деле хранятся там, поэтому они выглядят неправильно. Вы можете исправить неверно кодированные данные в таблице, перейдя на latin1, а затем обратно в utf8 через двоичный набор символов (всего три шага).

0

Оригинальная база была в китайской кодировке - GB-18030 или аналогичная, не Latin-1 - и байты, которые составляют эти символы, когда отображаются в UTF-8, показать, как набор латинских диакритиков , Прочитайте каждую строку как GB-18030, преобразуйте ее в UTF-8 и сохраните.

 Смежные вопросы

  • Нет связанных вопросов^_^