Как с этим бороться?
Существует последовательность определения своих действий:
1. Используя
PHPMyAdmin “залезть” в
БД форума, и определить в какой кодировке находятся таблицы;
2. Определить кодировку Мускула (
MySQL);
3. Предпринять действия к предотвращению проблемы.
Допустим,
БД у нас в кодировке
utf-8, а соединений мускула и его кодировка в
ср1251.
Берем файл
init.php с папки
includes, находим там строчку (сразу после подключения
PHP:
{
vbulletin_demo_init_db();
}
И после этой строчки используем сия код:
PHP:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
Все проблемы должны решиться.
Другая ситуация -
БД в
ср1251, Мускул в
utf-8. Берем все тот же
init.php, находим ту самую строчку:
PHP:
{
vbulletin_demo_init_db();
}
И используем этот код:
PHP:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Вот и все.
-------------------------------------------------
Внимание: Ниже - для версии 3.8! |
-------------------------------------------------
Найти:
PHP:
// make $db a member of $vbulletin
Перед ней добавить:
PHP:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Или
PHP:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
-------------------------------------------------
Внимание: Ниже - для версии 4.0! |
-------------------------------------------------
Найти:
PHP:
// make $db a member of $vbulletin
$vbulletin->db =& $db;
Перед ней добавить:
PHP:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Или
PHP:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
Тут все.
P.S. Не забудьте наново перезагрузить языковый пакет (
!)
Что делать, если это мне не помогло?
Самое главное мы сделали — отрегулировали всеобщую кодировку БД и vB. Но, если у Вас все же проблема отображения некорректных символов осталась, то следует "копать" уже в другую сторону.
Последовательность действий:
1. Убедиться, что предыдущие действия по отрегулировке кодировки имеют правильный характер. Одним словом, дать себе и машине понять, что на серверной части все так, как и должно быть;
2. Проанализировать показатели браузера по выбору кодировки.
Да, как оказалось, браузер может и не "почувствовать" изменения, которые Вы проводили. В таком случае, весь процесс отладки завершен лишь наполовину.
Как пример: Имеется форум с параметрами кодировки — БД: Кодировка базы (utf-8), кодировка таблиц (utf-8), сопоставление MySQL (utf-8), языковая кодировка (utf-8).
В браузере каким-то боком все выводится "
кракозябрами". Смотрим кодировку, которую выбрал браузер и делаем ужасающее открытие — он отображает Вам страницу в кодировке ср1251.
Что же делать?
А следующие:
1. Если в корне форума нет
.htaccess, то создать его;
2. В этом самом файле
.htaccess прописать:
Код:
AddDefaultCharset [[B]нужная для Вас кодировка[/B]]
В нашем случае, будет выглядеть так:
Код:
AddDefaultCharset [COLOR="Red"]utf-8[/COLOR]
Более подробная информация по
.htaccess:
Для просмотра ссылки Войди или Зарегистрируйся
Данный метод решения — брутален. Но, полезен для тех, кто не может прочесть даже символы в админ-панели. Для тех, кому удалось перескочить на английский язык, предлагаю глобальное решение проблемы:
Админ-панель — Языки и фразы — Управление языками — Редактировать настройки — Набор символов HTML — [выставить нужную кодировку]
Есть еще варианты?
Да, есть еще один вариант. Но, он скорее закрепляющий, а не кардинально меняющий кодировку. Посему, эффект от него не гарантирован.
Попробуем использовать стандартную функцию файла
config.php. Открываем данный файл и находим следующую строчку:
Код:
[B][COLOR="Green"]//[/COLOR][/B] $config['Mysqli']['charset'] = 'utf8';
По умолчанию она закомментирована. Нам же следует ее раскомментировать (убрать
//) и указать требуемую нам кодировку. Т.е., выйти должно следующее:
Код:
$config['Mysqli']['charset'] = 'utf8';
Данный прием работает лишь в том случае (да, бывают и чудеса), если Вы используете
MySQLi, а не
MySQL. Конфигурация так же находится в файле
config.php:
Код:
$config['Database']['dbtype'] = '[COLOR="Red"]mysql[/COLOR]';
Вот и все.