MySQL uft8_unicode_ci - PullRequest
       10

MySQL uft8_unicode_ci

2 голосов
/ 04 сентября 2010

Я хочу убедиться, что что-то записано.

Мои таблицы базы данных utf8_unicode_ci, код моего сайта и заголовок utf-8 и т. Д. И т. Д.

Я сделал тест иМоя гостевая книга Я ввел это:

á
ʵßăāÇϢϞﻨ☺ 

▓ ▓ẻ ▓ẻṎ

۞ ݤ

Теперь замечательно, что он отображается на веб-странице так, как должен, и я тестировал другие языки и т. д., но при проверке этого в phpmyadmin он показывает в области значений текстового поля в phpmyadminas:

á
ʵßăÄÇϢϞﻨ☺ 

▓ ▓ẻ ▓ẻṎ

۞ ݤ

Может кто-нибудь сказать мне, почему это выглядит так в phpmyadmin?Я имею в виду, хранится ли он таким образом, и это нормально, или он должен храниться именно так, как я его напечатал?Это происходит на всех иностранных языках, таких как китайский и т. Д.В основном все иностранные языки.

Я проверил, чтобы убедиться, и в phpmyadmin он говорит:

Сортировка соединения MySQL: utf8_unicode_ci и кодировка MySQL: UTF-8 Unicode (utf8)

Возможноэто phpmyadmin?Если это так, что я должен сделать, чтобы phpmyadmin правильно отображал utf-8, либо он, либо MySQL неправильно его хранят, хотя при выводе на веб-страницу он отображается нормально.

1 Ответ

2 голосов
/ 04 сентября 2010

Нет, это не PhpMyAdmin. Он всегда использовал UTF-8 все время.

Соединение с БД в самом PHP-приложении, скорее всего, не использует UTF-8. Хотя байты, которые передаются с одной стороны на другую, одинаковы, они были закодированы и декодированы с использованием неправильной кодировки, а именно платформы по умолчанию, которая, скорее всего, соответствует ISO-8859-1 согласно шаблонам Моджибаке символов (первый символ пары / тройки UTF-8 часто становится Ã, Â, Ä и т. П.)

Вам нужно разрешить PHP сообщать MySQL, используя mysql_set_charset(), что вы работаете с данными UTF-8:

mysql_set_charset("utf8");

Обратите внимание, что это работает только в PHP> = 5.2.3 и MySQL> = 5.0.7, иначе вместо этого вам нужно выполнить запрос SET NAMES, см. Также вышеупомянутое руководство по PHP. Также обратите внимание, что вам нужно обрезать и пополнить БД новыми данными, вы больше не сможете снова отобразить их на веб-странице, не преобразовав их обратно с помощью некоторого сценария SQL.

...