• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

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

xex

Постоялец
Регистрация
13 Июн 2007
Сообщения
72
Реакции
24
Здравствуйте.
Помогите решить трабл с кодировкой.
Довелось один сайт посадить на UTF-8, посерчил форум, проделал все как следует, т.е. конвертонул все файлы и БД с ее таблицами, везде в файлах windows-1251 и cp1251 было заменено.. и, вроде все сначала было хорошо - админка все корректно отображает, шаблоны выводятся корректно но как только я добавил какую-нить новость сразу же всплыл глюк с буквой "ш" и "И" .. долго вникая что же не так... догадался заглянуть в mу.cnf и увидел что там конечно же:
[mysqld]
init-connect="SET NAMES cp1251"
default-character-set=cp1251
...
[server]
init-connect="SET NAMES cp1251"
default-character-set=cp1251
и если поменять на УТФ то проблема с этими буквами решается, но! не могу сейчас такое я там указать ибо много сайтов и форумов крутится и прийдется их всех тоже переводить на UTF-8 а это много времени.. поэтому, я ж так понимаю, что можно в какой-то файл движка DLE принудительно указать что-то на подобии mysql_query ("SET NAMES UTF8"); дабы он игнорил серверный дефолтный параметр и ломился в UTF-8 ?! подскажите! :thenks:
 
Явно укажи все необходимые параметры подключения:
Код:
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'");
 
да..да видел уже эти советы,, и зная это, пытался со своим нубским уровнем зания ПХП и мускула додуматься, куда же его прописать (+ я не подозревал, что еще надо знать как его прописывать).. тем более конкретные советы люди давали еще для дле 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:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху