Вчера я несколько часов пытался разобраться с этой проблемой:
У меня есть база данных на сервере MySQL 4.1.22 с установленной кодировкой «UTF-8 Unicode (utf8)» (как сообщает phpMyAdmin). Таблицы в этой базе данных имеют набор символов по умолчанию, установленный на latin2 . Но веб-приложение (CMS Made Simple, написанное на PHP), использующее его, отображает страницы в utf8 ...
Как бы не облажалось это, на самом деле это работает. Веб-приложение правильно отображает символы (в основном используются чешский и польский языки).
Я запускаю: "mysqldump -u xxx -p -h yyy имя_базы> dump.sql". Это дает мне сценарий SQL, который:
- отлично смотрится в любом редакторе (например, в Блокноте +) при отображении в 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
Я попытался установить:
SET character_set_client = utf8;
SET character_set_connection = latin2;
И все комбинации (просто для безопасности, даже если это не имеет никакого смысла для меня): latin2 / utf8, latin2 / latin2, utf8 / utf8 и т. Д. - не помогают. Все персонажи по-прежнему зашифрованы, но иногда по-другому:).
Я также попытался заменить все настройки latin2 на utf8 в скрипте (задать имена и наборы символов по умолчанию для таблиц). Ничего.
Есть ли здесь эксперты по MySQL, которые могли бы объяснить в нескольких словах (я уверен, что все просто), как на самом деле работает весь этот код? Я читаю 9.1.4. Наборы символов и параметры соединения , но ничего полезного там не найдено.
Спасибо,
Matt