Версия для печати Версия для печати

Кракозябры в дампе MySQL или при просмотре базы через PhpMyAdmin — Решение Проблемы.

Март 25, 2009 автор:  
Из раздела: Заморочки, Разное

  • Нравится
  • Sharebar
  • Нравится

Столкнулся с данной проблемой при переносе одного форума с движка phpBB2 на phpBB3. Получилось так что после конвертации базы форум стал выдавать кракозяблы вместо русских букв. Оказалос что на старом форуме база и все таблицы были созданы в кодировке utf8_general_ci, а старый форум в них писал под кодировкой Windows-1251 (там в конфигурационном файле такие настройки были). В итоге получилась неконвертабельная база.
Вообщем возникла необходимость конвертации базы MySQL в нормальный вид с кодировкой utf8_general_ci. Решение получилось такое:
1. Берем скрипт Sypex Dumper который делает бэкап базы и одновременно меняет его кодировку на Windows-1251.
Полная инструкция по настройке скрипта для принудительной смены кодировки здесь http://sypex.net/encoding/ но нам из инструкции необходимо только вот это:

Cохранить БД с помощью нового дампера 1.0.8 (предварительно установив в dumper.php следующие значения, CHARSET = ‘auto’, RESTORE_CHARSET = ‘forced->cp1251′), желательно для подстраховки убедиться, что в дампе нормально сохранены русские символы.

2. Откройте полученный дамп в стандартном блокноте Windows (если большой размер попробуйте его открыть в wordpad или в какой нибудь другой программе) обязательно убедитесь что все надписи на русском языке читаются нормально. Выделите весь текст в редакторе и скопируйте в буфер обмена.

3. Создайте файл в Nootepad++. Установите в этом чистом файле нужную вам кодировку. В моем случае отмечено 2 пункта «Кодировать в ANSI» и «Кодировать в UTF без BOM». После выбора кодировки вставьте содержимое буфера обмена в файл.
4. Удалите лишнюю первую строку в этом файле ( Начинается с #SKD). Инструментом «поиск и замена» редактора Nootepad++ замените во всем файле «DEFAULT CHARSET=latin1″ на «DEFAULT CHARSET=utf8″.
5. Сохраните файл с преобразованным дампом.
6. Зайдите в PhpMyAdmin создайте чистую базу в кодировке utf8_general_ci и Collation utf8_general_ci.
7. Импортируйте через PhpMyAdmin в созданную базу полученный ранее дамп.
8. Откройте базу данных и просмотрите через PhpMyAdmin. В итоге всё: база данных и таблицы должны быть в одной кодировке utf8_general_ci. Все записи прекрасно читаются через PhpMyAdmin значит данные тоже в кодировке utf8.

Возможно подобная схема подойдет и для работы с другими кодировками.

VN:F [1.9.12_1141]
Rating: 0.0/10 (0 votes cast)
[BobrDobr.ru] [del.icio.us] [Digg] [Facebook] [Google] [Ma.gnolia] [Memori] [Mister Wong] [МоёМесто] [MySpace] [MyWeb] [Reddit] [StumbleUpon] [Technorati] [Twitter] [Windows Live] [Yahoo!]

Комментарии, обсуждение:

2 комментариев на "Кракозябры в дампе MySQL или при просмотре базы через PhpMyAdmin — Решение Проблемы."

  1. peter911 on Чт, 22nd Июл 2010 06:40 

    Не помогло — http://otvety.google.ru/otvety/thread?table=%2Fotvety%2Fuser%3Fuserid%3D05565832952494191689&tid=4b602f9c01cebc80

    VA:F [1.9.12_1141]
    Rating: 0 (from 0 votes)
  2. Maggi on Пт, 27th Авг 2010 00:20 

    Пожалуйста, разъясните мне, как в PhpMyAdmin
    создать чистую базу в кодировке utf8_general_ci и Collation utf8_general_ci. Открываю PhpMyAdmin и далее по пунктам:
    1) Создать новую БД — пишу здесь название моей базы
    2) Рядом окно со словом сравнение — выбираю в ниспадающем меню кодировку utf8_general_ci
    3) Далее окно Language — из имеющегося можно выбрать лишь Russian (ru-utf-8)
    4) Далее стоит по умолчанию
    MySQL-кодировка: UTF-8 Unicode (utf8)
    5) Сопоставление соединения с MySQL — выбираю utf8_general_ci.
    Мож. подскажите, как мне поменять кодировку UTF-8 на utf8_general_ci. Делаю сайт с японским языком и никак не могу сдвинуться.

    VA:F [1.9.12_1141]
    Rating: 0 (from 0 votes)

Выскажите ваше мнение по теме публикации...
Ваше мнение очень интересно нам и нашим читателям.