1. Важное и срочное обновление IPB 3.4.5 - https://nulled.cc/threads/243375/

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

Тема в разделе "IPB", создана пользователем Android, 22 июл 2009.

Статус темы:
Закрыта.
Модераторы: Maybe
  1. Android

    Android

    Регистр.:
    10 июн 2006
    Сообщения:
    646
    Симпатии:
    541
    Известно что при русификации 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
    После этого можно обновлять ланг файлы, если обновление было до вышеперечисленных действий то скорее всего в базе хранятся строки с не той кодировкой, по этому лучше переустаноить под чистую.
     
    SergAgent и orfo нравится это.
  2. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    612
    Симпатии:
    73
    Тут не согласен с тобой. Строки должны быть в таком примерно формате:
    Иначе вываливает целый ворох ошибок :(

    Добавлено через 2 минуты
    самое неприятное, что после смены локали, символ отделения тысяч в числительных стал выдавать неприятную ошибку:
    Это происходит во всех местах, где требуется этот символ (в общем везде, где чего-то больше тысячи)
     
  3. Android

    Android

    Регистр.:
    10 июн 2006
    Сообщения:
    646
    Симпатии:
    541
    Странно, у меня не вылетало, формат указан правильный, если нотайсы летят то сделай так:

    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, можно это прописать и в файле конекта к базе данных, так даже правильней будет =).
     
    SergAgent нравится это.
  4. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    612
    Симпатии:
    73
    Так ошибки не вылетают. Попробую сегодня всё сначала пересобрать... Хотя в некоторые моменты (с числительными) верится с трудом.

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

    Добавлено через 34 минуты
    Ответ GiV`а из IBR по поводу глюка с числительными
    Значит точно будут что-то химичить с ядром
     
  5. Android

    Android

    Регистр.:
    10 июн 2006
    Сообщения:
    646
    Симпатии:
    541
    А где с ними проблема? Если ты про склонения так можно написать функцию:

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

    Но хук что выше всего лишь позволяет правильно сконектится с бд и в правильной кодировке вывести все данные, чего можно достичь правильно настроив сервак.
     
  6. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    612
    Симпатии:
    73
    Не-не. не про склонения. Я же выше писал:
    Если число больше тысячи, то знак отделения тысяч (в данном случае какой-то особый пробел видимо) отображается вопросом.
     
  7. KeyForDLE

    KeyForDLE Постоялец

    Регистр.:
    26 фев 2008
    Сообщения:
    64
    Симпатии:
    29
    Если скрипт устанавливается с нуля, то после создания базы данных и до установки скрипта необходимо зайти в 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:
     
  8. Ha3aP

    Ha3aP Постоялец

    Регистр.:
    27 июл 2008
    Сообщения:
    109
    Симпатии:
    13
    ИБР набирает бета-тестеров для 3.0.1 Рус, но тестить смогут только их клиенты.
    Подробнее здесь:
    http://forums.ibresource.ru/index.php?showtopic=58191&hl=
     
    $iD нравится это.
  9. $iD

    $iD Постоялец

    Заблокирован
    Регистр.:
    23 дек 2006
    Сообщения:
    1.005
    Симпатии:
    174
    Ha3aP
    хорошая новость! значит в ближайшее время выйдет полноценная версия от IBR :yahoo:
     
  10. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    612
    Симпатии:
    73
    Найден охеренный косяк с опросами. Они не конвертятся правильно из cp1251 в UTF-8 поэтому в темах-опросах, сами опросы, как ни странно отсутствуют...
    IBR планирует как-то это дело починить, но сейчас во всех версиях 3.0.1 такое наблюдается.
     
Статус темы:
Закрыта.