Помощь Кодировка ДБ ДЛЕ

Тема в разделе "DLE", создана пользователем Хортица, 18 дек 2006.

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

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

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

    Хортица Прохожие

    Подскажите в каких файлах ДЛЕ 5.2 используется подключение к ДБ?!
    Проблема в том что В CMS установил кодировку UTF8 в фале /engine/data/config.php
    В phpMyAdmin тоже UTF8
    Когда редактирую и просматриваю новость все отображается коректно, когда отправляю новость на сайт, там вместо русских символов "????"
    Как быть?!
     
  2. Jerry

    Jerry тот самый Учиха

    Регистр.:
    16 апр 2006
    Сообщения:
    1.226
    Симпатии:
    490
    Избавляемся от знаков "????" после установки скрипта

    Такс все надоело выслушивать после каждой новой версии скрипта серию вопросов: "А почему у меня ??? вместо текста новостей", поэтому продолжаем публикацию серии полезных советов по работе с движком :party: .

    И так вы установили скрипт и с удивлением обнаружили что у вас ??? вместо русского текста, то конечно впервую очередь идут гневные вопросы авторам скрипта. Хотя я бы на вашем месте впервую очередь задал бы этот вопрос вашему хостеру. Мне тоже например интересно почему у хостеров в России локаль по умолчанию в MySQL сервере настроена на latin1. Что все клиенты у них говорят на английском? Я еще могу понять когда стоит UTF-8, но когда у российского хостера стоит latin1_swedish_ci. Это просто убивает, это говорит только о полной некомпетенции хостера по настройке MySQL сервера или о его лени. Итак хватит вступления, пора приступить к практике как от этого избавится, неожидая неповоротливости хостера:

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

    1. Скрипт после установки пытается установить для таблиц нужную локаль, но помимо этого еще существует и сопоставление соединения с MySQL. Поэтому вам необходимо зайти в MyPHPAdmin и установить сопоставление соединения с MySQL на cp1251_general_ci. Не переживайте это доступно не всем, поэтому если вы не найдете нужного пункта, то просто читайте дальше.

    2. Посмотрите в MyPHPAdmin какое сопоставление стоит в ваших таблицах. Должно быть также cp1251_general_ci. Если там стоит другое значение, то выполните следующий запрос:

    Код:
    ALTER DATABASE `база` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci


    Вместо "база" незабудьте написать имя вашей базы данных, в которую установлен скрипт.

    3. И последний пункт если вам не помогли первые два, то откройте файл engine/inc/mysql.php и найдите
    Код:
        function connect($db_user, $db_pass, $db_name, $db_location = 'localhost', $show_error=1)
        {
            if(!$this->db_id = @mysql_connect($db_location, $db_user, $db_pass)) {
                if($show_error == 1) {
                    $this->display_error(mysql_error(), mysql_errno());
                } else {
                    return false;
                }
            } 
    
            if(!@mysql_select_db($db_name, $this->db_id)) {
                if($show_error == 1) {
                    $this->display_error(mysql_error(), mysql_errno());
                } else {
                    return false;
                }
            }
    
            return true;
        }
    
    замените его на:
    Код:
        function connect($db_user, $db_pass, $db_name, $db_location = 'localhost', $show_error=1)
        {
            if(!$this->db_id = @mysql_connect($db_location, $db_user, $db_pass)) {
                if($show_error == 1) {
                    $this->display_error(mysql_error(), mysql_errno());
                } else {
                    return false;
                }
            } 
    
            if(!@mysql_select_db($db_name, $this->db_id)) {
                if($show_error == 1) {
                    $this->display_error(mysql_error(), mysql_errno());
                } else {
                    return false;
                }
            }
    
            mysql_query("/*!40101 SET NAMES 'cp1251' */");
            return true;
        }
    
    
    Все теперь, у вас точно пропадут все знаки "???", да кстати перед тем как проверяете решилась проблема или нет, незабывайте удалять все файлы .php из папок engine/cache/ и engine/cache/system/. Это кеш из базы данных.
     
  3. Хортица

    Хортица Прохожие

    Да, Джери именно 3ий пункт мне помог... Выцепил его на оф сайте... Но тибе за старание ;)
     
Статус темы:
Закрыта.