Я потянув меня выслушаю над этой проблемой в течение нескольких часов вчера:Загрузка UTF-8 кодируются дамп в MySQL
Я базы данных на сервере MySQL 4.1.22 с кодировкой, установленной в «UTF- 8 Unicode (utf8) "(как сообщает phpMyAdmin). Таблицы в этой базе данных имеют набор символов по умолчанию: latin2. Но веб-приложение (CMS Made Simple, написанное на PHP), используя его, отображает страницы в utf8 ...
Как бы это ни было, это действительно работает. Веб-приложение отображает символы правильно (в основном используются чешские и польские).
Я запускаю: «mysqldump -u xxx -p -h yyy dbname> dump.sql». Это дает мне сценарий SQL, который:
- выглядит идеально в любом редакторе (например, Notepad +) при отображении в UTF-8 - все символы отображаются правильно
- все таблицы в сценарии есть по умолчанию набор кодировок для latin2
- у него есть "/ *! 40101 SET NAMES latin2 * /;" линия в начале (среди других параметров)
Теперь я хочу, чтобы экспортировать эту базу данных на другой сервер работает на MySQL 5.0.67, а также с кодировка сервера установлен в «UTF-8 Unicode (utf8)». Я скопировал всю установку CMS Made Simple, скопировал сценарий dump.sql и запустил «mysql -h ddd -u zzz -p dbname < dump.sql». После этого все символы скремблируются при отображении веб-страниц CMSMS.
Я попытался установить:
SET character_set_client = utf8;
SET character_set_connection = latin2;
И все комбинации (только для того, чтобы быть в безопасности, даже если это не имеет для меня никакого смысла): latin2/utf8, latin2/latin2, utf8/utf8 и т. Д. - не помогает. Все персонажи все еще скремблировались, но иногда по-другому :).
Я также попытался заменить все настройки latin2 на utf8 в скрипте (задать имена и кодировки по умолчанию для таблиц). Ничего.
Есть ли здесь эксперты MySQL, которые могли бы объяснить всего несколькими словами (я уверен, что это просто все-таки), как действительно работает весь этот материал кодирования? Я читал 9.1.4. Connection Character Sets and Collations, но ничего не нашел.
Спасибо, Matt
+1, добавляя `--default-характе- set = utf8` решил для меня аналогичную проблему. – Jonik 2011-07-27 14:30:10