Subdreamer на MySQL 5.1 - проблемы с кодировкой при руссификации

Тема в разделе "Sabdrimer", создана пользователем Vaka, 30 ноя 2008.

Статус темы:
Закрыта.
  1. Vaka

    Vaka Постоялец

    Регистр.:
    27 июн 2006
    Сообщения:
    86
    Симпатии:
    29
    Когда использовал базы данных MySQL 4.0 для Сабдримера - все было в порядке. Но вот мой хостер перестал предоставлять эти базы и перешел полностью на MySQL 5.1. И вот тут начались глюки, вернее - один глюк..

    Проблема проявляется на этапе руссификации (в кодировке windows-1251) - слетает кодировка кириллицы.. все кириллические тексты выглядят на сайте и в админке как "?????? ?? ????? ????? ??????????"..

    Переговоры с тех.поддержкой хостинга ни к чему не привели - они грешат на некорректность применяемой CMS.

    Кстати пробовались версии Сабдримера 2.4.3.1, 2.5.3.2, 2.6.0.. Везде этот глюк имеет место быть..

    Никто не сталкивался с подобным?

    Посоветуйте, пож-ста, пути решения этой проблемы..

    В саппорте хостинга посоветовали устанавливать в скрипте коннекта к базе - принудительное переключение кодировки на windows-1251..

    Но я не в курсе как это делать и где..
     
  2. ppr

    ppr Постоялец

    Регистр.:
    2 апр 2006
    Сообщения:
    68
    Симпатии:
    20
    Да, надо принудительно, это обычная проблема.

    В файле includes/db/mysql.php

    есть команда

    PHP:
    @mysql_query("SET NAMES '".$charset_tmp."'"$this->conn);
    Судя по всему, она программным образом не работает.

    Надо где-то вставить

    PHP:
    @mysql_query("set character_set_connection=cp1251");
    @
    mysql_query("set names cp1251");

    Попробуй найти:

    PHP:
            $charset_tmp str_replace(array_keys($charsets), array_values($charsets), $charset_tmp);
            @
    mysql_query("SET NAMES '".$charset_tmp."'"$this->conn);
          }
        }
      }
    И вставь так:

    PHP:
            $charset_tmp str_replace(array_keys($charsets), array_values($charsets), $charset_tmp);
            @
    mysql_query("SET NAMES '".$charset_tmp."'"$this->conn);
          }
        }
    @
    mysql_query("set character_set_connection=cp1251");
    @
    mysql_query("set names cp1251");
      }

    Если там не заработает, попробуй вставить в других местах этого файла.
     
    Vaka нравится это.
  3. Vaka

    Vaka Постоялец

    Регистр.:
    27 июн 2006
    Сообщения:
    86
    Симпатии:
    29
    попробовал как вы подсказали, но все равно "??????" при руссификации CMS.. саппорт хостинга посоветовал вставить вот такие строки:

    PHP:
    mysql_query('SET character_set_results="CP1251_GENERAL_CI"');
    mysql_query("SET CHARACTER SET CP1251_GENERAL_CI");
    mysql_query("SET NAMES 'CP1251'");
    но результат тот же, то есть без результата..

    пробовал также выполнять вот эту рекомендацию саппорта: "Попробуйте в файл xxxxxxxx.ru/includes/config.php прописать строки:"

    PHP:
    define('DB_CHARSET''cp1251'); #  кодировка базы данных: utf8 или cp1251  
    define('DB_COLLATE''cp1251_general_ci'); # кодировка, в которой хранятся данные: utf8_general_ci или cp1251_general_ci
    но тоже безрезультатно..

    посоветуйте куда еще можно попробовать вставить ваш кусок кода (я в php совсем несведущ, к сожалению)..
     
  4. Vaka

    Vaka Постоялец

    Регистр.:
    27 июн 2006
    Сообщения:
    86
    Симпатии:
    29
    пока ждал советов, решил попробовать использовать utf-8 кодировку.. перекодировал файл russian.php в utf-8.. создал новую базу MySQL 5.1 в кодировке utf-8 .. на первый взгляд - все хорошо, русский язык отображается коректно, что и требовалось..

    но гложут сомнения..

    какие подводные камни могут быть при кодировке utf-8 на сайте, под сабдримером? (сейчас мучаю 2.6.0 версию)
     
  5. duncan

    duncan батяр з личакова

    Регистр.:
    10 апр 2007
    Сообщения:
    1.591
    Симпатии:
    438
    у меня один сайт именно в ютф-8, ибо сделан для поляков, а использовать польскую кодировку я не хотел...
    никаких проблем не наблюдается..
     
    Vaka нравится это.
  6. ppr

    ppr Постоялец

    Регистр.:
    2 апр 2006
    Сообщения:
    68
    Симпатии:
    20
    Подводный камень может быть. Сохрани базу через phpMyAdmin в файл и открой ее в текстовом редакторе. Русский текст должен читаться.

    Потому что создание БД в UTF-8 и установка настроек в админке на utf-8 еще не гарантирует, что во время передачи кодировка не изменится посредством PHP. Эта проблема общая для всех систем, не только Сабдримера.
     
    Vaka нравится это.
  7. Yuri

    Yuri Создатель

    Регистр.:
    17 сен 2007
    Сообщения:
    35
    Симпатии:
    4
    mysql_query("SET NAMES 'CP1251'"); надо вставлять в mysql.php который находится в папке с системными файлами. Я сталкивался с такой проблемой када ставил форум... тоже пришлося добавлять строки. и связано это именно с PHP5. Проблема в нем. Точнее в том что саб его не до конца любил...
     
  8. HardCoder

    HardCoder Прохожие

    Это можно настроить либо в php либо прописать в штакесе
     
  9. Ketsune

    Ketsune Создатель

    Регистр.:
    8 июн 2009
    Сообщения:
    11
    Симпатии:
    0
    В пхпмайадмин - перед заливкой выстови сет найнс цп1251, а вообще с чем у тя сейчас сравнение идет на сервере?
     
Статус темы:
Закрыта.