[Языки] Фиксим кодировку в IP.Board 3

Статус
В этой теме нельзя размещать новые ответы.

Android

Хранитель порядка
Регистрация
9 Июн 2006
Сообщения
680
Реакции
626
Известно что при русификации IP.Board 3 возникают разного рода проблемы с отображением русского текста в админке и на самом форуме. Все это зависит от настроек апача и мускула на хостинге. Но у меня получилось добится нормального отображения русского текста как в админке так и на фронтальной части :yahoo:. Для этого еще до установки либо до русификации необходимо выполнить следующие шаги:

Строго прописать кодировку utf8 для соиденения с бд, это можно сделать в файле ips_kernel\classDbMysqlClient.php, найти строки:

Код:
         //-----------------------------------------
         // If there's a charset set, run it
         //-----------------------------------------
И выше добавить:
Код:
         //-----------------------------------------
         // START: ANDROID FIX CHARSET SET UTF8
         // If there's a charset set, run it
         //-----------------------------------------
             @mysql_query("SET NAMES 'utf8'");
        @mysql_query("SET collation_connection='utf8_general_ci'");
        @mysql_query("SET collation_server='utf8_general_ci'");
        @mysql_query("SET character_set_client='utf8'");
        @mysql_query("SET character_set_connection='utf8'");
        @mysql_query("SET character_set_results='utf8'");
        @mysql_query("SET character_set_server='utf8'");
         //-----------------------------------------
         // END: ANDROID FIX CHARSET SET UTF8
         //-----------------------------------------

Также необходимо чтобы Ваш браузер нормально определял кодировку utf8 для всех страниц форума, для этого в корень форума кладем файл .htaccess с таким содержимым:

Код:
AddDefaultCharset utf-8
<IfModule mod_charset.c>
   CharsetRecodeMultipartForms Off
   CharsetSourceEnc utf-8
</IfModule>


Установить локаль (Для просмотра ссылки Войди или Зарегистрируйся:(
Код:
ru_RU.UTF-8
После этого можно обновлять ланг файлы, если обновление было до вышеперечисленных действий то скорее всего в базе хранятся строки с не той кодировкой, по этому лучше переустаноить под чистую.
 
mysql_query("SET NAMES 'utf8'");
mysql_query("SET collation_connection='utf8_general_ci'");
mysql_query("SET collation_server='utf8_general_ci'");
mysql_query("SET character_set_client='utf8'");
mysql_query("SET character_set_connection='utf8'");
mysql_query("SET character_set_results='utf8'");
mysql_query("SET character_set_server='utf8'");
Тут не согласен с тобой. Строки должны быть в таком примерно формате:
$INFO['sql_charset'] = 'utf8';
Иначе вываливает целый ворох ошибок :(

Добавлено через 2 минуты
самое неприятное, что после смены локали, символ отделения тысяч в числительных стал выдавать неприятную ошибку:
325 Тем
1�499 Ответов
Это происходит во всех местах, где требуется этот символ (в общем везде, где чего-то больше тысячи)
 
Тут не согласен с тобой. Строки должны быть в таком примерно формате:

Иначе вываливает целый ворох ошибок :(
Странно, у меня не вылетало, формат указан правильный, если нотайсы летят то сделай так:

PHP:
@mysql_query("SET NAMES 'utf8'");
@mysql_query("SET collation_connection='utf8_general_ci'");
@mysql_query("SET collation_server='utf8_general_ci'");
@mysql_query("SET character_set_client='utf8'");
@mysql_query("SET character_set_connection='utf8'");
@mysql_query("SET character_set_results='utf8'");
@mysql_query("SET character_set_server='utf8'");

Это именно установка соединения с бд в utf8, можно это прописать и в файле конекта к базе данных, так даже правильней будет =).
 
Странно, у меня не вылетало, формат указан правильный, если нотайсы летят то сделай так:
Так ошибки не вылетают. Попробую сегодня всё сначала пересобрать... Хотя в некоторые моменты (с числительными) верится с трудом.

Каким образом проще всего дамп базы перекоодировать в UTF-8? Я конвертацию и замену делал через AkelPad

Добавлено через 34 минуты
 
Хотя в некоторые моменты (с числительными) верится с трудом.
А где с ними проблема? Если ты про склонения так можно написать функцию:

PHP:
function pluralForm($n, $form1, $form2, $form5)  
{  
    $n = abs($n) % 100;  
    $n1 = $n % 10;  
    if ($n > 10 && $n < 20) return $form5;  
    if ($n1 > 1 && $n1 < 5) return $form2;  
    if ($n1 == 1) return $form1;  
    return $form5;  
}  
  
// пример использования  
echo “В Вашем почтовом ящике $n “.pluralForm($n, “письмо”, “письма”, “писем”);

Или так: Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Но хук что выше всего лишь позволяет правильно сконектится с бд и в правильной кодировке вывести все данные, чего можно достичь правильно настроив сервак.
 
Не-не. не про склонения. Я же выше писал:
325 Тем
1�499 Ответов
Если число больше тысячи, то знак отделения тысяч (в данном случае какой-то особый пробел видимо) отображается вопросом.
 
Если скрипт устанавливается с нуля, то после создания базы данных и до установки скрипта необходимо зайти в phpMyAdmin(или любую программу позволяет выполнять SQL запросы) и:
1. Зайти в созданную пустую базу данных
2. Открыть вкладку SQL запроса
3. Выполнить запрос
Код:
ALTER DATABASE DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci;

Делается это для того чтобы установить эту БД по умолчанию в юникод, тк хостинг часто имеет другую кодировку, особенно в России.

Так же, если все скрипты на сайте используют юникод, и есть доступ к php.ini, то можно вставить/отредактировать следующее:
Код:
; As of 4.0b4, PHP always outputs a character encoding by default in
; the Content-type: header.  To disable sending of the charset, simply
; set it to be empty.
;
; PHP's built-in default is text/html
default_mimetype = "text/html"
default_charset = "utf-8"

:cool:
 
ИБР набирает бета-тестеров для 3.0.1 Рус, но тестить смогут только их клиенты.
Подробнее здесь:
 
  • Нравится
Реакции: $iD
  • Заблокирован
  • #9
Ha3aP
хорошая новость! значит в ближайшее время выйдет полноценная версия от IBR :yahoo:
 
Найден охеренный косяк с опросами. Они не конвертятся правильно из cp1251 в UTF-8 поэтому в темах-опросах, сами опросы, как ни странно отсутствуют...
IBR планирует как-то это дело починить, но сейчас во всех версиях 3.0.1 такое наблюдается.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху