MySQL: Перекодировка из latin1 в utf8
Если вы храните в БД данные в кодировке UTF-8, то наверняка сталкивались с ситуацией, когда по ошибке эти данные записывались в таблицу с кодировкой latin1 по умолчанию. Не смотря на то, что данные выглядят совершенно нечитабельно, это можно легко исправить.
Для извлечения данных из БД используется команда mysqldump. С параметрами по умолчанию она извлечет данные из БД и переедет их в текущую кодировку нашей локали. Если в локали кодировка UTF-8, тогда данные испортятся ещё сильнее: они станут закодированными в UTF-8 дважды. Поэтому необходимо задать некоторые параметры в команде экспорта:
mysqldump --default-character-set=latin1 --skip-set-charset mydatabase mytable > ./mytable.sql
В текущем каталоге будет создан файл mytable.sql с дампом таблицы. Откройте его в текстовом редакторе и найдите код, который создает таблицу:
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL,
`name` char(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Замените latin1 на utf8. Если вы экспортировали несколько таблиц, произведите эту операцию соответствующее число раз. Можно воспользоваться функцией автозамены текстового редактора.
Теперь данные нужно импортировать обратно в БД:
mysql --user=login -p --database=mydatabase < ./mytable.sql
Ссылки
Статьи
Форум
Реклама
Удаленное администрирование, поддержка nginx, тюнинг и настройка выделенного сервера.
