С cp1251 на UTF8

Вижу вопросы перехода на UTF8 не так просты как, кажутся с первого взгляда.
Так, как же всё-таки безболезненно перевести свою базу с кодировки 1251 на UTF8?

1. Первым делом любой занимающийся этим должен посмотреть какие Системные переменные MySQL он имеет.



Если они имеют приблизительно такой вид, а такой вид они имеют у большинства российских хостеров, то можно смело двигаться дальше.


2. Перед тем как конвертировать базу надо сделать дамп существующей базы. Лучшим инструментом сделать дамп я считаю Sypex Dumper

Как пользоваться Sypex Dumper?
a) Достать файл dumper.php из архива и положить в корень сайта, можно почитать инструкцию readme.txt она тоже в архиве. Имя файла dumper.php не менять, иначе работать не будет!
б) Открыть файл dumper.php с помощью текстового редактора Notepad++ если у вас Windows, BBEdit если Mac OS X или встроенным редактором в nix.
в) Если мы делаем это на локальной машине localhost параметры оставляем как есть. Если сервер хостера заполняем
// mysql сервер
define('DBHOST', 'название сервера MySQL : ПОРТ на котором висит сервер');
// Базы данных, если сервер не разрешает просматривать список баз данных,
// и ничего не показывается после авторизации. Перечислите названия через запятую
define('DBNAMES', 'Ваша база');
г)Создаём в корневой папке сайта папку backup и устанавливаем для этого каталога CHMOD 777.
д) Запускаем скрипт
http://www.ваш_сайт.ру/dumper.php

понятное дело что сюда мы вписываем логин и пароль для подсоединения к базе данных MySQL.
е) Попадаем сюда


и выбираем БД: которую будем архивировать


Если дело происходит на сервере хостера не забываем установить сжатие но не BZip2(проблемы с ним), а GZip, дабы потом не убивать трафик загружая дамп на ПК.


вот и всё дамп сделан и находится в корне вашего сайта в каталоге backup


Теперь загрузим архив на свой ПК извлечём из архива .sql файл и откроем его текстовым редактором, который советовал выше и обратим внимание на места обозначенные стрелками. Это места подтверждающие то, что дамп имеет кодовую страницу Windows 1251.



Для перекодировки в UTF8 достаточно просто сохранить этот файл с параметрами в BBEdit


если ваша оп систем Windows то Notepad++ имеет специальную опцию в файловом меню для работы с кодировками и вы должны выбрать там перекодировать Unicode UTF8 без BOM после чего сохранится.


Свидетельство того, что конверт успешен наличие правильных русских символов в дампе кодировка текста у меня показана стрелкой соответствует UTF8.

Важно!
Далее по тексту дампа осуществить поиск ctrl+f Windows и nix или cmd+f для Mac Os X и заменить все вхождения CHARSET=cp1251 на CHARSET=utf8, конечно же только в тех местах где это надо!!!


После этого конвертация завершена. Конверт вашей базы .sql надо расположить в папке backup созданную нами ранее в корне сайта. Если это не localhost сожмите ваш.sql файл gzip, чтобы не гонять трафик и положите хостеру в корень сайта в папку backup.

3 Создадим новую базу данных с помощью phpMyAdmin


создаём новую не трогаем старую базу!

Я создал nikiza_utf8



Предлагаю вам файл dumper_local_40.zip, это тот же Damper, но преобразованый мной для работы с кодировкой UTF8 так же там прописаны необходимые параметры. Этот файл надо скинуть в корень сайта и запустить:
http://www.ваш_сайт.ру/dumper_local.php
Имя файла dumper_local.php не менять, иначе работать не будет! Как видите ничего сверхъестественного всё тоже самое только в UTF8.

Выбираем Восстановление БД из резервной копии. Моя БД: (пустая) nikiza_utf8 выбираю, вы выбирайте свою, что создали. Файл: - тут укажите тот файл, который вы получили при конвертации. Я выбрал свой.


Жмём Применить!


Готово!!!

Проверяем что получилось через phpMyAdmin.



Всё прекрасно парни и девчата, база в UTF8!
Это не единственно правильное решение, но работоспособность последнего проверена на 100%, так как в момент написания текста я проделывал описанное шаг за шагом. 


1. Sergeich  2010-07-20 10:36
теперь всё можно сделать проще, используя только Sypex Dumper 2.
Устанавливаем Sypex Dumper 2 на ваш старый сайт, входим в него и делаем бекап вашей базы указав в нужном окошечке кодировку UTF-8, скачиваем созданный бекап на свой компьютер.

Теперь устанавлваем Sypex Dumper 2 на ваш новый сайт, не забываем закачать и созданный ранее бекап, входим в Sypex Dumper 2, импортируем вашу базу указав явно кодировку UTF-8 и поставив галочку "коррекция кодировки".

Всё.
Only registered users can post new comments