PHP MySQL Китайский UTF-8 выпуск - PullRequest
0 голосов
/ 28 марта 2012

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

enter image description here

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

Ответы [ 2 ]

0 голосов
/ 22 мая 2012

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

0 голосов
/ 28 марта 2012

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

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