CMS

Вопросы вместо букв!

Я купил хостинг и установил xoops как и на локальном компьютере, но руские слова отображаются знаками ??????? .????? - что-то вроде этого. Но при этом на панеле администрирования слова Главная, Завершение сеанса нормально отображаются.
В чем дело?
Сайт http://www.iwol.ru
xoops_redirect - открой блокнотом и впиши по русски, или забей и вкл. сайт. и проверь кодировку сравнения d phpmy admin/
А можно, пожалуйста, по доступней объяснить со вторым вариантом?
Копался в форумах по похожим проблемам:
mysql_query("SET NAMES 'utf8'");
Говорят, что это из-за перехода mysql 4.0 на mysql 4.1
localhost
Версия сервера: 4.1.21-standard-log
Версия протокола: 10
Сервер: Localhost via UNIX socket
Пользователь: iwolru@localhost
MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: cp_1251_general_ci
phpMyAdmin - 2.9.0.2
Версия MySQL-клиента: 4.1.10
Использованы расширения PHP: mysql
Язык - Language : Russian
Впервые поставил на localhost для ознакомления XOOPS 2.0.16 с русификатором для него. Скачал отсюда http://xoops2.ru/.
Стоит Денвер с PHP5, MySQL 4.1.16-max. Те же проблемы с ???? вместо букв в заголовках. В базе тоже. Несовпадение кодировок при установке полагаю. Английская ставится нормально. Дело или в русификаторе или в MySQL. Если программа глючит уже
при установке, добра от нее не жди. Закинул в дальний угол.
Проблема с кодировкой в БД мускл. Соответственно и копать надо в эту сторону.
----------------
www.uzlovaya.ru
Но как это исправить?
ну так посмотри какая у тебя в базе кодировка стоит
character set clientutf8
и
character set resultsutf8
ну вот отсюда и проблемыИзмени на utf8
----------------
Сайт города Рыбинска
Мне посоветовали вставить
mysql_query("set names 'utf8'");
после mysql_select_db
if (!mysql_select_db(XOOPS_DB_NAME)) {
$this->logger->addQuery('', $this->error(), $this->errno());
return false;
я вставлял и так
if (!mysql_select_db(XOOPS_DB_NAME)) {
mysql_query("set names 'utf8'");
$this->logger->addQuery('', $this->error(), $this->errno());
return false;
и сяк
if (!mysql_select_db(XOOPS_DB_NAME)) {
$this->logger->addQuery('', $this->error(), $this->errno());
mysql_query("set names 'utf8'");
return false;
но ничего не изменилось, как его вставить?
Доступ к базе через админ-панель есть?
Такая же трабла.
Это особенность MySQL версии 4.1. По умолчанию используется кодировка UTF8. Для работы с другой кодировкой (например win/utf8) нужно после соединения и перед первым запросом в базу давать следующие команды:
SET NAMES utf8
SET COLLATION_CONNECTION=utf8_GENERAL_CI
(предлогают хостеры, вместо того чтоб настроить нормально)
РЕШЕНИЕ В XOOPS
В конце файлов:
class/mysqldatabase.php
calss/databasefactory.php
пишем это:
mysql_query('SET character_set_results="utf8_GENERAL_CI"');
mysql_query("SET CHARACTER SET utf8_GENERAL_CI");
mysql_query("SET NAMES 'utf8'");
Проверено все работает и маленькие и большие буковки.
mysql_query('SET NAMES utf8'); - должен решить проблему
попробуй вместо
function connect($selectdb = true){if (XOOPS_DB_PCONNECT == 1) {$this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);} else {$this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);}if (!$this->conn) {$this->logger->addQuery('', $this->error(), $this->errno());return false;}if($selectdb != false){if (!mysql_select_db(XOOPS_DB_NAME)) {$this->logger->addQuery('', $this->error(), $this->errno());return false;}}return true;}
А ещё наверно лучше вставить сюда
if($selectdb != false){if (!mysql_select_db(XOOPS_DB_NAME)) {$this->logger->addQuery('', $this->error(), $this->errno());return false;}mysql_query('SET NAMES utf8');}
Мда, интересная штука.
Всё так же, хост перешел на MySQL 4.1, где по умолчанию стоит utf, без права изменения пользователем параметров баз данных.
Но проблемы с "вопросительными знаками" появляются только при установке новых модулей. Решил поставить новый content и наткнулся. Ставлю вчерашние бэкапы со старым tinycontentom - все в порядке.
Естественно, все database-файлы заполнены строками c SET NAMES utf8, что, впрочем, не дало результата.