Как быстро сконвертировать свою базу данных из кодировки cp1251 в utf8. Зачем это надо? А затем, что кодировка utf8 имеет большую гибкость по сравнению с cp1251.
Итак...
1. Создаем дамп базы MySQL в cp1251 коммандой:
mysqldump --opt -u имя_пользователя -pпароль имяБД > cp1251dump.sql
2. Конвертируем полученный дамп в utf8:
iconv -f cp1251 -t utf8 cp1251dump.sql > utf8dump.sql
3. Очищаем нащу базу данных. Для этого выполняем запросы:
DROP DATABASE имяБД;
CREATE DATABASE имяБД CHARACTER SET utf8 COLLATE utf8_general_ci;
4. Импортируем в базу наш сконвертированный в utf8 дамп:
mysql -u имя_пользователя -pпароль --default-character-set=utf8 имяБД < utf8dump.sql
5. Радуемся
Зы: спасибо товарищу Pilot34
Кстати это работает только если в базе в BLOB-ах не хранится текст
Действительно.
Но имхо хранить в BLOB'е текст будет только извращенец.
Есть дамп cp1251dump.sql, нет доступа к консоли. Пожалуйста, выдайте решение ввиде PHP скрипта.
Без проблем:
Скажите, а в обратную сторону можно? из utf-8 в cp1251?
Естественно
файл:
iconv -f utf8 -t cp1251 utf8dump.sql > cp1251dump.sql
база данных:
DROP DATABASE имяБД;
CREATE DATABASE имяБД CHARACTER SET cp1251 COLLATE cp1251_general_ci;
импорт:
mysql -u имя_пользователя -pпароль --default-character-set=cp1251 имяБД < utf8dump.sql