Denik - 03 Декабрь 2008 02:23 A.M.
Я с этим уже встречался. Надо исправлять БД.
Мой метод восстановления кодировки следующий:
Качаем замечательную утилиту для создания бэкапа: http://sypex.net/files/SypexDumperLite_108.zip
1) Делаем этот бэкап и откладываем его в сторону. Это на тот случай если ничего с исправлением БД не выйдет. (лучше скачать именно себе на комп)
2) Меняем режим считывания БД (кодировку) на latin1. Как это сделаеть:
—для этого открываем скачанный файл dumper.php в блокноте и ищем строку #40:
define('CHARSET', 'auto');
меняем ее на:
define('CHARSET', 'latin1');
3) Делаем бэкам в этом новом режиме. Dumper будет ругаться красненьким цветом на кодировку, но отработать должен как надо.
4) Меняем режим записи БД (кодировку) на ту, которая нам нужна (utf8):
—для этого ищем строку #45:
define('RESTORE_CHARSET', 'cp1251');
меняем ее на:
define('RESTORE_CHARSET', 'utf8');
5) Записываем считанную БД (в 3м пункте) в этом новом режиме.
6) Заходим в phpmyadmin, смотрим что все стало на сови места. Но пока не радуемся.
7) Сайт перестал работать - это нормально. Фиксим так:
—открываем файл: /system/db/db.mysql.php . ищем строку:
$this->server_info = @mysql_get_server_info();
добавляем после:
// Denik encoding fix
mysql_query("SET NAMES utf8");
(с комментарием )
8) Радуемся!
У каждого додика своя методика
PS: Для точности своей методики все пункты во время написания проделал на хом-сервере
PS2: Не знаю почему платная ЦМС-ка сделала такие баги с кодировкой! НЕ зачёт
Сейчас вся БД у меня в кодировке cp1251_general_ci
Ну и кириллица в phpmyadmin конечно не отобраается. Как мне твой вариант поменять, чтобы с cp1251_general_ci на utf-8 переехать?