Тема: Решения проблем с кодировками
[size=16]Проблема с кодировкой (вместо текста непонятная абракадабра). Что делать?[/size]
Прежде чем начать, важное замечание! Тестировать надо заново, каждый раз после внесения изменений, иначе не поймете, откуда взялась новая проблема и исчезла ли старая.
1) Возможно, нужно просто пересохранить некоторые файлы в нужной вам кодировке? Для этого нужно открыть все админ-скрипты в редакторе с поддержкой utf, пересохранить в нужной кодировке и перезалить. Таким же способом надо пересохранить все скрипты плагинов в директории /plugins. В зависимости от сборки набор пересохранямых файлов может меняться, поэтому здесь никакой конкретики.
2) Проверить в mysql.php наличие строки:
//@mysql_query("SET NAMES 'utf8'");раскомментировать, поэксперементировать с параметром "SET NAMES", подставляя разные значения (utf-8, cp1251, windows-1251).
3) В файле common.php:
'lang_encoding' => 'utf-8',utf сменить на windows-1251, или наоборот, в зависимости от вашего случая опять же.
4) Проверить, какой header content-encoding шлет сервер. Если не верный, то задаем принудительно. header.php, находите строку:
header('Pragma: no-cache');после нее вставляете:
header('Content-type: text/html; charset=utf-8');utf-8 или cp1251, как всегда, в зависимости от того, что вам требуется. Возможно придется добавить в include/functions.php, в функцию redirect тот же header
5) В .htacces прописать строку:
AddDefaultCharset utf-8(или win-1251, в зависимости от того, что вам нужно). Или же можно прописать:
AddDefaultCharset Offтогда браузеры будут на автомате использовать <meta ...charset...> страниц. Имейте ввиду, что это может быть запрещено хостером, если проблема с кодировками никак не хочет решаться, имеет смысл напрямую связаться с вашим хостером и требовать у него разрешения проблемы.
6) Проверить default charset и collation у таблиц в БД, выставить там нужную кодировку, если что-то не так.
7) Встречается похожая проблема, когда выпадает одна или несколько букв (обычно "ш" или "и"), и вместо нее выводится "?". В таком случае, нужно проверить в config.php, что тип БД не mysqli, а обычный mysql. Также в этом случае может помочь раскомментирование строки SET NAMES в mysql.php, описанное выше.
И последнее, при эксперементах может получиться так, что старые данные остаются в крякозябрах, но новые создаются уже нормально. Значит проблема решена. Старые записи можно восстановить с помощью бэкапа и конвертации.
Если ничего не помогло, можно еще немного почитать о проблеме с кодировками в связке php/mysql. Удачи! ![]()