Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
 
 
 
 

 
 
Здесь скоро опять что то будет...
 
 
 
 
 
 
Loading

Вернуться   форум vBSupport.org > vBSupport.org > Гурушник > AleX

Объявления
  • Изменения в правах
  • Каталог Фрилансеров
  • Добро пожаловать!
  • Premoderation
  • Новичкам!
  • For English speaking users
Ответ
 
Опции темы Опции просмотра
Старый 10.09.2008, 00:07   #1
vBManiac
 
Аватар для AleX
Exclamation Кодировка vBulletin

Так-с, очень много проблем, связанные с кодировкой форума. В итоге у некоторых появляются “кракозябры” (непонятные спецсимволы и т.п.), а у некоторых вообще отсутствует язык на форуме.

Как с этим бороться?

Существует последовательность определения своих действий:
1. Используя PHPMyAdmin “залезть” в БД форума, и определить в какой кодировке находятся таблицы;
2. Определить кодировку Мускула (MySQL);
3. Предпринять действия к предотвращению проблемы.

Допустим, БД у нас в кодировке utf-8, а соединений мускула и его кодировка в ср1251.

Будем использовать стандартную функцию файла config.php. Открываем данный файл и находим следующую строчку:
Код:
// $config['Mysqli']['charset'] = 'utf8';
По умолчанию она закомментирована. Нам же следует ее раскомментировать (убрать //) и указать требуемую нам кодировку. Т.е., выйти должно следующее:
Код:
$config['Mysqli']['charset'] = 'utf8';
Данный прием работает лишь в том случае (да, бывают и чудеса), если Вы используете MySQLi, а не MySQL. Конфигурация так же находится в файле config.php:
Код:
$config['Database']['dbtype'] = 'mysql';
Вот и все.


Что делать, если это мне не помогло?
Самое главное мы сделали — отрегулировали всеобщую кодировку БД и vB. Но, если у Вас все же проблема отображения некорректных символов осталась, то следует "копать" уже в другую сторону.
Последовательность действий:
1. Убедиться, что предыдущие действия по отрегулировке кодировки имеют правильный характер. Одним словом, дать себе и машине понять, что на серверной части все так, как и должно быть;
2. Проанализировать показатели браузера по выбору кодировки.

Да, как оказалось, браузер может и не "почувствовать" изменения, которые Вы проводили. В таком случае, весь процесс отладки завершен лишь наполовину.

Как пример: Имеется форум с параметрами кодировки — БД: Кодировка базы (utf-8), кодировка таблиц (utf-8), сопоставление MySQL (utf-8), языковая кодировка (utf-8).
В браузере каким-то боком все выводится "кракозябрами". Смотрим кодировку, которую выбрал браузер и делаем ужасающее открытие — он отображает Вам страницу в кодировке ср1251. Что же делать?
А следующие:
1. Если в корне форума нет .htaccess, то создать его;
2. В этом самом файле .htaccess прописать:
Код:
AddDefaultCharset [нужная для Вас кодировка]
В нашем случае, будет выглядеть так:
Код:
AddDefaultCharset utf-8
Более подробная информация по .htaccess: Указание явной кодировки

Данный метод решения — брутален. Но, полезен для тех, кто не может прочесть даже символы в админ-панели. Для тех, кому удалось перескочить на английский язык, предлагаю глобальное решение проблемы:
Админ-панель — Языки и фразы — Управление языками — Редактировать настройки — Набор символов HTML — [выставить нужную кодировку]

Есть еще варианты?

Да, есть еще один вариант. Но, он кардинально меняет кодировку соединения. Если обычное решение не помогает, значит у вас большие проблемы с кодировками, которые надо решать, иначе есть вероятность в будущем получить бекапы, которые невозможно восстановить.

Тем не менее, для тех, кто хочет, чтобы работало прямо сейчас, ещё один вариант решения:

Берем файл 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.x! |
-------------------------------------------------

Найти:
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. Не забудьте наново перезагрузить языковый пакет (!)

Примечание: Спасибо zCarot'у за актуальные правки. =)
Внимание: Если Вам данная статья не помогла, то воспользуйтесь статьей OldEr.

Последний раз редактировалось AleX; 03.08.2009 в 00:10..
  Ответить с цитированием
Сказали Спасибо:
Скрыть список поблагодаривших

AggreSSor (20.02.2012), Alexxali (13.03.2012), alice2k (04.09.2010), allpowerful (10.01.2010), alvus (03.02.2011), anelly (21.02.2011), Apache (28.11.2008), Apk (08.12.2009), Arbitrlaw (24.04.2010), Axom (18.10.2009), Azeroth (12.08.2011), banderych (15.06.2010), Bizzaro (03.05.2011), BLonD (14.09.2008), BOTello (13.10.2010), Capri (02.07.2011), Crypt (03.06.2009), darsitaros (20.08.2009), Deasl (23.02.2012), devoursoul (26.07.2011), Efristical (17.10.2009), fesu (13.11.2009), galagan (25.09.2009), Giatestor (22.10.2009), goldsnake (19.06.2009), GrinGo (05.07.2010), Gulia (11.06.2011), Homer (24.02.2012), ilyuzhko (10.03.2012), IMPERlAL (08.06.2009), JoJomuro (05.04.2012), Justes (15.07.2010), kadetvb (21.06.2010), kompins (17.08.2009), Kristof (17.07.2009), Kurbatov (09.01.2012), lddnsk (14.08.2011), LuckyNeo (24.02.2010), Luckyperson (21.03.2011), Luvilla (30.09.2009), Lynx (14.11.2010), maJic (10.09.2008), makis (21.07.2009), mff (14.12.2010), Michael Russu (22.06.2010), MikeEs (13.01.2009), mono (20.08.2010), Mor0 (22.04.2009), moslem (08.07.2010), mOZi (18.06.2010), MySuccess (17.12.2010), niceteam (07.09.2009), noviceuser (22.04.2009), OldEr (01.11.2008), oreh (24.05.2010), Orfo (05.02.2009), outlander (14.04.2009), ower (13.11.2010), oxoTHuk (03.11.2008), Panadol (24.01.2011), phobos (09.11.2010), ppoe (28.02.2011), Pravdaufa (20.11.2009), Programmer (20.07.2010), random256 (06.12.2010), razgruzenko (03.11.2009), real1l (09.05.2009), Rustle (10.01.2009), S4mmael (11.01.2009), Sacred (18.02.2011), SeM13 (22.06.2010), Serberg (01.08.2009), serena (01.12.2010), serrr (08.05.2011), Shestak (18.06.2010), SkBars (09.03.2010), Slava P (20.01.2011), SMak044 (16.02.2012), SotUshka (30.04.2011), Stan aka Vodka (31.08.2010), stassav (09.06.2011), Stingray (08.12.2010), Storm (28.08.2011), TAIFUN (08.04.2009), Talrush (11.05.2011), Tdayne (18.11.2009), tgralex (14.09.2009), transfiguratziya (29.04.2010), vasin (03.09.2010), vipcheck (04.02.2011), Vladi (16.09.2010), voldron (15.07.2010), welf (14.10.2011), zipa (18.04.2009), Вектор (16.03.2011), Лориэн (21.08.2009), Юпис (14.10.2011)
Рекламка
Реклама на форуме
Старый 10.09.2008, 00:33   #2
maJic
В Черном списке
 
Аватар для maJic
Бинго! Было бы это на месяца 2 раньше при переезде с IPB
  Ответить с цитированием
Старый 10.09.2008, 00:57   #3
AleX
vBManiac
 
Аватар для AleX
maJic, так исторически сложилось.
  Ответить с цитированием
Старый 10.09.2008, 01:46   #4
Лео
В Черном списке
 
Аватар для Лео
хм... я обычно сравнение менял и всё работает.. на крайняк в конфиге коменты снимал
Скоро начнут появляться темы "Помогите, после обновления весь форум в вопросах"
  Ответить с цитированием
Старый 10.09.2008, 02:13   #5
AleX
vBManiac
 
Аватар для AleX
Лео, не всегда раскомментирование строчки чарсета в конфиге помогает. =)
  Ответить с цитированием
Старый 10.09.2008, 04:31   #6
Лео
В Черном списке
 
Аватар для Лео
AleX, знаю, поэтому фиксил саму базу и сравнение =)
  Ответить с цитированием
Старый 21.09.2008, 00:40   #7
a_n_d_y
Знаток
 
Аватар для a_n_d_y
Цитата:
Скоро начнут появляться темы "Помогите, после обновления весь форум в вопросах"
Кстати ты прав
Я ща обновил с 3.6.4 до 3.7.0 и лажа с кодировкой.
Вставил вот это
PHP код:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'"); 
Топики и их названия отображаются нормально. А названия форумов и титл форума ???????
Помню была таже проблема, я ее решил как-то, но блин не могу найти где я правил. Мож подскажите?
  Ответить с цитированием
Старый 21.09.2008, 00:56   #8
netwind
Гуру
 
Аватар для netwind
1. На новых версиях mysql ни разу не видел чтобы установка кодировки в конфиге не помогла.
2. А вы в?даете про то, что на форуме даже в windows-1251 тоже можно д?бiльные символы записывать посредством специальной юникодной нотации? Подумайте прежде чем конвертировать в utf8.
  Ответить с цитированием
Старый 21.09.2008, 03:45   #9
a_n_d_y
Знаток
 
Аватар для a_n_d_y
Цитата:
Сообщение от netwind Посмотреть сообщение
1. На новых версиях mysql ни разу не видел чтобы установка кодировки в конфиге не помогла.
2. А вы в?даете про то, что на форуме даже в windows-1251 тоже можно д?бiльные символы записывать посредством специальной юникодной нотации? Подумайте прежде чем конвертировать в utf8.
Сори код не тот вставил. Конечно там везде cp1251...
А на счет новых версий, то это вы переборщили, очень даже часто глючат...
  Ответить с цитированием
Старый 21.09.2008, 10:59   #10
netwind
Гуру
 
Аватар для netwind
a_n_d_y, там берется из конфига и делается Set names. Это почти эквивалент тех трех операторов только более надежный. Не нужно редактировать файлы каждый раз.

Что касается твоей проблемы - просто что-нибудь поменяй в настройках, раздел создай и удали, в этом случае Datastore cache заново пересоздается в нормальной кодировке.
  Ответить с цитированием
Ответ

Закладки

Метки
utf-8, utf8, windows-1251, кодировка

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



 
 

Текущее время: 01:59 25.05.2012. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot