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

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

Vaka

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

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

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

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

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

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

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

Но я не в курсе как это делать и где..
 
Да, надо принудительно, это обычная проблема.

В файле 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
попробовал как вы подсказали, но все равно "??????" при руссификации 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 совсем несведущ, к сожалению)..
 
пока ждал советов, решил попробовать использовать utf-8 кодировку.. перекодировал файл russian.php в utf-8.. создал новую базу MySQL 5.1 в кодировке utf-8 .. на первый взгляд - все хорошо, русский язык отображается коректно, что и требовалось..

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

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

у меня один сайт именно в ютф-8, ибо сделан для поляков, а использовать польскую кодировку я не хотел...
никаких проблем не наблюдается..
 
  • Нравится
Реакции: Vaka
создал новую базу MySQL 5.1 в кодировке utf-8 ..
какие подводные камни могут быть при кодировке utf-8 на сайте, под сабдримером?

Подводный камень может быть. Сохрани базу через phpMyAdmin в файл и открой ее в текстовом редакторе. Русский текст должен читаться.

Потому что создание БД в UTF-8 и установка настроек в админке на utf-8 еще не гарантирует, что во время передачи кодировка не изменится посредством PHP. Эта проблема общая для всех систем, не только Сабдримера.
 
  • Нравится
Реакции: Vaka
mysql_query("SET NAMES 'CP1251'"); надо вставлять в mysql.php который находится в папке с системными файлами. Я сталкивался с такой проблемой када ставил форум... тоже пришлося добавлять строки. и связано это именно с PHP5. Проблема в нем. Точнее в том что саб его не до конца любил...
 
Подводный камень может быть. Сохрани базу через phpMyAdmin в файл и открой ее в текстовом редакторе. Русский текст должен читаться.

Потому что создание БД в UTF-8 и установка настроек в админке на utf-8 еще не гарантирует, что во время передачи кодировка не изменится посредством PHP. Эта проблема общая для всех систем, не только Сабдримера.
Это можно настроить либо в php либо прописать в штакесе
 
В пхпмайадмин - перед заливкой выстови сет найнс цп1251, а вообще с чем у тя сейчас сравнение идет на сервере?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху