Проблемы с кодировками при переносе mysql-ной базы
я вот с ораклом в свое время когда на ютф8 переезжал не сумел дамп сменить
поэтому поставил новую базу с ютф8
экспортнул тудть структуру таблиц (тоесть токо команды create table)
из старой в новую перелил данные через пхп-скрипт
(написал простенький пхп скрипт, который делает select * из старой базы, если тип данных строка, то меняет кодировку
и делает insert в новую базу)
затем экспортнул все триггеры, констрейнты и всю прочую лабудень
образом база - приводила к тем же яйцам.
Меня терзают смутные сомнения (с). Я не уверен что дамп на
самом деле в кои. То есть mysql думает что это кои, а скрипт
вполне мог бы записывать в него скажем win-cp1251. Как это
проверить?
Я не уверен что дамп на самом деле в кои.это как?
нельзя тупо зайти в файл и посмотреть его кодировку?
Открываю дамп в браузере - вижу кракозябры при выборе
любой из кодировок. Byjгда кракозябры совершенно невменяемые,
иногда - русские буквы, да не те.
Вот какой момент: если указать браузеру что это utf8
он отображает "неправильные" русские буквы. Если я эти буквы
копипастну в Тёмин декодер
используя FireFox под Win они вставятся в форму теми же
"неправильными" русскими буквами, и после дешифровки декодер выдаёт:
Как нам пришлось помучиться: KOI -> WIN
и декодирует в осмысленную фразу.
Если я копипастну тоже в FF под Linix - он сразу при вставке в форму
декодера показывет уже не кракозябры а осмысленную фразу.
Если же я выставляю в браузере кодировку кои - все русские
буквы отображаются псевдографикой.
Зайти можно. Но, как Вы правильно заметили - тупо. Открываю дамп в браузере - вижу кракозябры при выборе любой из кодировок. Byjгда кракозябры совершенно невменяемые,иногда - русские буквы, да не те.Вот какой момент: если указать браузеру что это utf8 он отображает "неправильные" русские буквы. Если я эти буквыкопипастну в Тёмин декодер используя FireFox под Win они вставятся в форму теми же"неправильными" русскими буквами, и после дешифровки декодер выдаёт:Как нам пришлось помучиться: KOI -> WIN и декодирует в осмысленную фразу.Если я копипастну тоже в FF под Linix - он сразу при вставке в формудекодера показывет уже не кракозябры а осмысленную фразу.Если же я выставляю в браузере кодировку кои - все русские буквы отображаются псевдографикой.отсюда всего следует простой вывод
кодировка базы была KOI8-R
mysql делает дамп "в виде" UTF-8
/*!40101 SET NAMES utf8 */;
но при создании каждой таблицы указывается koi:
CREATE TABLE `adodb_logsql` (
бла
бла
бла
) ENGINE=MyISAM DEFAULT CHARSET=koi8r;
Установил на сервере все флаги что только можно в утф8. Перезапустил его.
Попробовал всосать базу - ругается. Не нравится ему упоминания koi8 в дампе.
заменил их на утф8. Импортировал без ругони.
На экране - опять одни вопросы!
Оставить комментарий
alice07
Добрые гуру, помогите советом!Есть продакшн хост под фрёй, там стоит Apache+PHP+MySQL. На нём живет
некая база, обслуживаемая неким php-движком.
Есть тест-сервер где до недавнего времени всё было _в_точности_тоже, в
смысле операционки и установленного софта.
Вот языковые настройки mysql (MySQL 4.1.10a) на продакшн-сервере:
character set client koi8r
character set connection koi8r
character set database koi8r
character set results koi8r
character set server koi8r
character set system utf8
character sets dir /usr/local/share/mysql/charsets/
collation connection koi8r_general_ci
collation database koi8r_general_ci
collation server koi8r_general_ci
Недавно проапгрейдил mysql на тест-сервере до версии MySQL 5.0.2-alpha.
Вот чего теперь там с языками:
Переменная Глобальное значение
character set client latin1
character set connection latin1
character set database latin1
character set results latin1
character set server latin1
character set system utf8
character sets dir /usr/local/share/mysql/charsets/
collation connection latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci
При переносе дампа базы с продакшн-сервера на тестовый теперь все русские
символы, читоемые из базы отображаются вопросами. Как бы это победить?
Пытался конвертить дамп с помощью iconv из koi в utf8, устанавливать в
мysqlе тестового сервера все кодировки в utf8 и в таком виде засасывать базу
из дампа - тот же эффект, одни знаки вопроса. Конечная цель всей акробатики -
перейти на utf8.