Не удается получить правильные символы для отображения из базы данных - PullRequest
0 голосов
/ 02 марта 2010

Я перепроектирую веб-сайт, и у меня возникла проблема с существующей базой данных: Для сортировки базы данных установлено значение utf8_unicode_ci, и в строке таблицы, которую я вызываю, похоже, установлено значение latin1_swedish_ci, в котором хранятся символы японского языка (но даже в phpmyadmin), вы видите другие символы (я думаю, из-за latin1_swedish_ci).

Когда я печатаю результат запроса, я получаю кучу ??? теперь использую

    mysql_query('SET NAMES utf8');
 mysql_set_charset('utf8',$conn); 

Будет ли выпускаться 2009, N10Å, Å 2009, N10, 2009, N11, 2009, N11, 1006 *

Есть идеи?

Ответы [ 3 ]

1 голос
/ 02 марта 2010

Поскольку таблица была настроена на использование latin1_swedish_ci, она не смогла правильно сохранить введенные данные UTF-8. Вам нужно переключить эту таблицу, чтобы использовать utf8_unicode_ci для передачи данных, но любые существующие данные существенно повреждены. Вам нужно будет повторно ввести данные после переключения параметров сортировки, чтобы получить правильные японские символы для существующих записей.

0 голосов
/ 03 марта 2010

Привет всем, спасибо за ваш ответ, это то, что произошло, я не мог ничего изменить в БД, так как есть другая версия сайта, которая все еще использует эту БД и будет работать. Итак, решение, которое я нашел, было следующее:

Сценарий: В БД установлено использование UTF8 -> (utf8_general_ci), но поле (по крайней мере, то, которое мне нужно, где установлено значение latin1_swedish_ci.

Решение: После mysql_connect я поставил следующее:

mysql_query("SET NAMES 'Shift_JIS'",$conn);
mysql_set_charset('Shift_JIS',$conn); 

Затем в файле PHP:

$titleJP = $row['titleJP'];
$titleJP = mb_convert_encoding($titleJP, "UTF-8", mb_detect_encoding($titleJP,"Shift_JIS,JIS,SJIS,eucjp-win"));

Теперь, когда все работает отлично, символы отображаются на правильном японском языке. Я безуспешно пытался найти решение, которое только мог придумать (utf-8_decode / закодировать php-функции и т. Д. И т. Д.)

0 голосов
/ 02 марта 2010

Вам нужно изменить кодировку на utf8. Не нужно изменять параметры сортировки для отображения японских символов (но для сортировки и сравнения текстов было бы неплохо изменить его на utf8_general_ci).

...