Из cp1251 в utf-8

LM
На сайте с 18.10.2009
Offline
117
947

В общем, на сервере есть +100500 баз данных mysql. Все в кодировке cp1251_general_ci, сервер mysql работает по-умолчанию также с cp1251.

Вопрос таков: возможно ли все эти базы перевести из кодировки cp1251 в utf-8? Чтобы не каждую по отдельности (их очень много), а разом.

p.s. сервер Debian, ispmanager lite, mysql 5.0.51

N
На сайте с 06.05.2007
Offline
419
#1

ну если все так просто, как вы пишите - делаете полный дамп всех баз :

mysqldump --all-databases --compatible=mysql40 --default-character-set=utf8

в mysql4.0 никаких средств перекодирования не было, а значит дамп получится без указания кодировок.

в начало файла добавляете set names utf8 и закатываете назад.

на самом деле, "кодировка базы mysql" это просто настройка по-умолчанию для конкретной базы и ничего о кодировке самих данных не определяет. там может быть что угодно накручено внутри.

кроме того, есть опасность, что вас не устроят утерянные специфичные определения в mysql5, триггеры и процедуры.

То есть этот массовый метод не лишен рисков, а значит не помешает сделать обычный бекап на всякий случай.

Кнопка вызова админа ()
LM
На сайте с 18.10.2009
Offline
117
#2

netwind, спасибо.

LinuxMan добавил 05.09.2010 в 18:48

Тут у клиента возник ещё вопрос: можно ли множество файлов перекодировать из ansi в utf-8 массово, не пересохраняя каждый файл в отдельности?

Может, кто сталкивался с подобным?..

Raistlin
На сайте с 01.02.2010
Offline
247
#3

man iconv

шелл-скрипт в десяток строк решит проблему.

HostAce - Асы в своем деле (http://hostace.ru)
D
На сайте с 11.05.2010
Offline
15
#4

LinuxMan цыклом читаете файлы в директории, имена файлов передаете на iconv, в iconv указываете с какой кодировке в какую и куда сохранять вывод.

С напильником и бубном (http://kaba.org.ua)
LM
На сайте с 18.10.2009
Offline
117
#5

Raistlin, delicate, спасибо. Будем пробовать :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий