MediaWiki, MySQL, cp1251, utf8

Михаил Елфимов on Март 25th 2008

Я сегодня так замечательно поебался с переносом mediawiki, что чувствую внутреннюю потребность об этом написать.
Это повесть об уебанском хостинге Мастерхост, у которого базы данных MySQL до сих пор находятся в кодировке cp1251.
Это повесть об уебанском движке википедии MediaWiki, по какой-то причине переебывающей utf8 в восьмибитную кодировку при записи в БД (cp1251 или latin1).
Процесс занял 4 часа.
На новом хостинге, конечно, база данных в utf8.
В первый раз поднял я дамп в новую базу, и увидел что «Заглавная_страница» выглядит как Заглавная_страница. И было это нехорошо.
Во второй раз поднял я дамп в новую базу, удалив нахуй все ссылки на cp1251 из скрипта, и увидел что «Заглавная страница» выглядит так, как ей и полагается. В базе. MediaWiki же говорила что заглавной страницы в упор не видит. А когда я создал Заглавную_страницу, то обнаружил что выглядит это как Заглавная_страница. Вроде бы почти Заглавная_страница. Но есть тонкая разница. В первом случае utf8 переебали в latin1, а во втором — в cp1251.

Итого. Через 4 часа алгоритм был ясен.
1. Экспортируем базу с мастерхоста (cp1251) с ключами -c –hex-blob
2. Импортируем в новую базу примерно таким образом:
tail -n +11 dump.sql | mysql --user=wikiuser --password --default-character-set=latin1 wikidb
Первая часть вырезает нах первые 10 строк SQL-скрипта — те, в которых говорится про cp1251. Вторая часть говорит что данные надо перевести из utf8 в latin1 — так, как их читает MediaWiki.

Честно говоря, к 6 утра я уже думал что не видать моей википедии нового хостинга. Но тут я путем проб и ошибок подобрал правильное сочетание.

Filed in - | 3 responses so far

1 нравится не нравится

3 Responses to “MediaWiki, MySQL, cp1251, utf8”

  1. dmytro Авг 30th 2008 at 11:43 пп 1

    Четыре часа - это я считаю повезло. Я уже несколько дней мозг сушу. Наверное, сказывается отсутствие технического образования и ssh. Мы не могли бы списаться?

    [reply to this comment]

    Михаил Елфимов reply on 30 Август 2008:

    На главной странице elfimov.com есть моё мыло. Задавайте вопросы, отвечу.

    [reply to this comment]

  2. Перенос Mediawiki Сен 9th 2008 at 03:00 дп 2

    […] MediaWiki, MySQL, cp1251, utf8 by Михаил Елфимов Posted in: Хаки и трики | | Post tags: Mediawiki, Баня, Говнохост […]

Trackback URI | Comments RSS

Leave a Reply