Начнем с простой задачи - есть mysql база в cp1251. Но прогресс идет - надо сконвертировать её в юникод, чтобы больше уже никогда не париться с кодировками (разве что в IE).
Идея просто - делаем дамп базы в текстовый файл, конвертируем этот файл и заливаем обратно уже в юникодную базу.
- Делаем дамп. Тут обязательность имени пользователя и пароля зависит от настроек
mysqldump --opt -u имя_пользователя -pпароль название_базы > dump.sql
- Теперь ковертируем наш дамп в юникод
iconv -f cp1251 -t utf8 dump.sql > dump-utf8.sql
- Создаем временную базу, чтобы проверить - всё ли впорядке
CREATE DATABASE название_базы_utf CHARACTER SET utf8 COLLATE utf8_general_ci;
- Импортируем наш дамп во временную базу
mysql -u имя_пользователя -pпароль --default-character-set=utf8 название_базы_utf < dump-utf8.sql
- Смотрим - все ли нормально импортировалось, если да - подчищаем мусор, удаляем обе базы:
DROP DATABASE название_базы; DROP DATABASE название_базы_utf;
- Создаем нашу базу
CREATE DATABASE название_базы CHARACTER SET utf8 COLLATE utf8_general_ci;
- Импортируем чистовик
mysql -u имя_пользователя -pпароль --default-character-set=utf8 название_базы < dump-utf8.sql
Ну и работает это только если в базе в BLOB-ах не хранится текст в cp1251. Он естественно в utf не перекодируется.
4 комментария:
предлогаю переименоваться в "впечатления и гемморой"
Гемморой - это пидорская цп1251, которую вместе с её создателями надо жечь напалмом!
Какой же ты умный.. Вот придумал бы ютф да внедрил..
Все намного сложнее, читайте тут: http://mysterria.com/article/konvertiruem-proekt-iz-cp1251-v-utf-8
Отправить комментарий