Помощь DLE 8.2 в UTF-8 но MySQL в cp1251 - хелп!

Тема в разделе "DLE", создана пользователем xex, 4 мар 2010.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. xex

    xex Постоялец

    Регистр.:
    13 июн 2007
    Сообщения:
    68
    Симпатии:
    5
    Здравствуйте.
    Помогите решить трабл с кодировкой.
    Довелось один сайт посадить на UTF-8, посерчил форум, проделал все как следует, т.е. конвертонул все файлы и БД с ее таблицами, везде в файлах windows-1251 и cp1251 было заменено.. и, вроде все сначала было хорошо - админка все корректно отображает, шаблоны выводятся корректно но как только я добавил какую-нить новость сразу же всплыл глюк с буквой "ш" и "И" .. долго вникая что же не так... догадался заглянуть в mу.cnf и увидел что там конечно же:
    и если поменять на УТФ то проблема с этими буквами решается, но! не могу сейчас такое я там указать ибо много сайтов и форумов крутится и прийдется их всех тоже переводить на UTF-8 а это много времени.. поэтому, я ж так понимаю, что можно в какой-то файл движка DLE принудительно указать что-то на подобии mysql_query ("SET NAMES UTF8"); дабы он игнорил серверный дефолтный параметр и ломился в UTF-8 ?! подскажите! :thenks:
     
  2. Yozik

    Yozik

    Регистр.:
    5 дек 2007
    Сообщения:
    238
    Симпатии:
    65
    Явно укажи все необходимые параметры подключения:
    Код:
    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'");
    
     
  3. xex

    xex Постоялец

    Регистр.:
    13 июн 2007
    Сообщения:
    68
    Симпатии:
    5
    да..да видел уже эти советы,, и зная это, пытался со своим нубским уровнем зания ПХП и мускула додуматься, куда же его прописать (+ я не подозревал, что еще надо знать как его прописывать).. тем более конкретные советы люди давали еще для дле 5.х а сейчас уже и файлы мускула в других местах.. но все же допер, именно на базе этой инфы которую тут уже и Yozik процитировал я понял (кстати, мне очень помогло еще и то, что в админке написано красноречиво и я обратил на это внимание: Версия MySQL: 5.1.30 MySQLi а то я как жоский нуб правил MySql а ведь надо MySqli)
    + из всего когала этих строк, методом тыка узрел, что нужно только 2 строчки (ну это в моем случае, который я описал выше, мало ли у кого там еще за расклады)
    так вот, правил я файл engine/classes/mysqli.class.php нашел
    PHP:
                    $this->mysql_version mysqli_get_server_info($this->db_id);
                    if(!
    defined('COLLATE'))
                    {
                            
    define ("COLLATE""utf8_general_ci");
                    }
                    
    mysqli_query($this->db_id"SET NAMES '" COLLATE "'");
    return 
    true;
            }
    и добавил
    PHP:
    mysqli_query($this->db_id"SET character_set_client = 'utf8'");
    mysqli_query($this->db_id"SET character_set_results = 'utf8'");
    т.е. в итоге должно быть так:
    PHP:
                    $this->mysql_version mysqli_get_server_info($this->db_id);
                    if(!
    defined('COLLATE'))
                    {
                            
    define ("COLLATE""utf8_general_ci");
                    }
                    
    mysqli_query($this->db_id"SET NAMES '" COLLATE "'");
                   
    mysqli_query($this->db_id"SET character_set_client = 'utf8'");
                   
    mysqli_query($this->db_id"SET character_set_results = 'utf8'");
    return 
    true;
            }
    :yahoo:
     
Статус темы:
Закрыта.