Как вылечить UTF …

.. может стоить больших нервов. При переезде на новый хост на днях буквально, случилось то, что обычно случается. База блога отобразилась кракозыбрами. Воевали мы долго, но победили. Дело вот в чем.

Любая версия phpmyadmin конектиться к базе в дефолтной collation мускуля, как правило это latin_1. А мы хотим UTF. Вот и получаются в базе кракозябры и как следствие при переезде на новый хост неправильный дамп базы и тут начинаются проблемы.

На некоторых хостах может спасти вот это в .htaccess:

AddDefaultCharset utf8
CharsetDefault utf8
CharsetSourceEnc utf8

Однако этого мало. Проверьте свою базу через phpmyadmin, наверняка в ней кракозябры. В таком случае Вам поможет следующее.

Ищем замечательную программку под названием Navicat. Эта програмка может конектиться к базе так, как ей скажешь. Подключение настраивается через SSH. Смотрите скриншоты (раз, два, три). Установить всё как там есть и можете подсоединяться. 90% что теперь Вы увидите свою базу на родном языке. Если нет, то нужно что-то придумывать.

Делаем dump базы через эту прогу, сохраняя в текстовый файл. Затем нужно будет открыть этот дамп в текстовом редакторе. Блокнот-подобные оставьте для других целей. Я использовал Dreamweaver 8.

В этом файле нужно сменить все Latin_1 на utf8. В DW8 это делается нажатием CTRL+F (найти и заменить). После этого сохраняете файл и грузитесь через phpmyadmin.

В phpmyadmin первым делом ставите collation mysql utf_unicode_ci. И в созданной для блога базе (пока еще ничего не импортируем, она должна быть пустая) меняем (скорее всего именно “меняем”) в Operations latin_1 на utf_unicode_ci.

Если в конце не полчиться, то смените db collation на utf_general_ci

А вот теперь можно заливать отредактированную базу. Это еще не всё. Идём в папку wp-includes нашего блога и открываем в текстовом редакторе файл wp-db.php, в котором ищем строку примерно 57. В этой строке написано:

$this->select($dbname);

Добавляем следующей строчкой SET NAMES и у нас получиться такое:

$this->select($dbname);
$this->query(”SET NAMES utf8″);

Естественно, залейте его обратно на хост. А теперь можете заходить на главную страницу своего WP-блога и наслаждаться. Если зайдете в phpmyadmin, то там база тоже будет на русском. Поздравляю, Вы справились.

ps. За помощь и советы отдельное спасибо Владимиру и InsaneX.

Вам могут быть также интересны записи по этой теме:
Переезд с Blogger на Wordpress
Как я перевел блог на UTF-8

 

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