Рубрики
Наследие

MySQL, кодировки и вопросики вместо русских букв

В предыдущей статье о русификации MySQL было написано как заставить mysql корректно работать с кодировкой utf8.

Но как быть если предположим есть два сервера и на одном из них mysql в utf8 а на другом — в стандартной кодировке?

Для решения этой проблемы предлагаем два очень простых скрипта — первый создает дампы всех баз, за исключением системных, а второй — заменяет существующие базы с неправильной кодировкой на правильную. Скрипт предназначен прежде всего для WHM/cPanel но в принципе пойдет на любых серверах.

В предыдущей статье о русификации MySQL было написано как заставить mysql корректно работать с кодировкой utf8.

Но как быть если предположим есть два сервера и на одном из них mysql в utf8 а на другом — в стандартной кодировке?

Для решения этой проблемы предлагаем два очень простых скрипта — первый создает дампы всех баз, за исключением системных, а второй — заменяет существующие базы с неправильной кодировкой на правильную. Скрипт предназначен прежде всего для WHM/cPanel но в принципе пойдет на любых серверах.

Сначала создадим архив с дампами баз mysql с помощью первого скрипта:

for i in `mysqlshow | grep -v + | grep -v '| Databases |' | cut -d ' ' -f2 | grep -v horde| grep -v mysql | grep -v eximstats`; do mysqldump -f --compatible=mysql40 $i > $i.sql; done; tar czf dump1251.tgz *.sql; rm *.sql

В результате будет создан файл dump1251.tgz — архив со всеми дампами sql в нормальной кодировке. Его необходимо перенести на другой сервер и восстановить с помощью второго скрипта:

for i in `ls *.sql`;do b=`basename $i .sql`;yes | mysqladmin drop $b; mysqladmin create $b; mysql --default-character-set=utf8 $b
После этого вместо вопросительных знаков появятся русские буквы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *