Главная страница / Советы / Избавляемся от знаков "????" после установки скрипта
декабрь 12 2006

Избавляемся от знаков "????" после установки скрипта

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

И так вы установили скрипт и с удивлением обнаружили что у вас ??? вместо русского текста, то конечно впервую очередь идут гневные вопросы авторам скрипта. Хотя я бы на вашем месте впервую очередь задал бы этот вопрос вашему хостеру. Мне тоже например интересно почему у хостеров в России локаль по умолчанию в 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/. Это кеш из базы данных.

Комментарии

Copoket

Copoket

29 января 2007 13:23 Посетители
0
5.3 та же проблема :( третий не подходит, первые 2 не помогли what
BugZ

BugZ

3 февраля 2007 22:32 Клиенты
0
заметил что все переехало в файлик mysql.class.php и дополнилось. у тех у кого лагануло должно исправляться удалением двух строчек: $this->mysql_version = mysql_get_server_info();

if (version_compare($this->mysql_version, '4.1', ">=")) mysql_query("/*!40101 SET NAMES 'cp1251' */");

так что теперь надо править mysql.class.php
Imperio

Imperio

10 февраля 2007 20:57 Клиенты
0
BugZ,
Спасибо, помогло! smile
alexsnake13

alexsnake13

23 марта 2007 00:59 Посетители
0
BugZ
у мя не помогает всеравно ничего((
salk

salk

3 мая 2007 20:03 Посетители
0
Все равно не помогает, если на браузере поменять кодировку все становится на свои места, но стоит перейти на другую страницу и снова закорючки.
Если кто знает как исправить, подскажите.
Mr 13

Mr 13

23 мая 2007 12:14 Посетители
0
salk, отключи в браузере автовыбор кодировки, и юзай FireFox, а не IE и не Оперу. laughing
BugZ

BugZ

30 октября 2007 07:56 Клиенты
0
Я вот никак не пойму - почему этот кусок переписать нельзя? почему каждый раз нужно исправлять - из версии в версию

ага. система изменилась :)
едем в engine\classes\mysql.class.php
там ищем define ("COLLATE", "1251") и меняем
нанашу родную define ("COLLATE", "latin1")
golovonog

golovonog

20 мая 2013 17:45 Посетители
0
Ухты какой старый пост, но проблемы всё теже ))) на улице 2013 и я буду опробывать эти три метода на своейм 9,8 =)) Надеюсь все также помогает...
celsoft

celsoft

20 мая 2013 18:31 Администраторы
0
Цитата: golovonog
Ухты какой старый пост, но проблемы всё теже ))) на улице 2013 и я буду опробывать эти три метода на своейм 9,8 =)) Надеюсь все также помогает...

К версии 9.8 это не имеет никакого отношения. Это вы уже сами что намудрили с кодировкой сайта или БД. Эта тема касалась установки скрипта и версия 9.8 делает это самостоятельно. У вас если и есть проблема, то явно не связанная с тем что описано здесь.
matog

matog

9 марта 2014 18:58 Посетители
0
Ничего не помогло а файла mysql.php, вообще нет!
celsoft

celsoft

9 марта 2014 23:29 Администраторы
0
Цитата: matog
Ничего не помогло а файла mysql.php, вообще нет!

И не поможет. У вас что версия скрипта выпущенная в 2006 году? Это не нужно делать уже много лет. И в актуальных версиях скрипта знаки вопроса могут быть только при физически поврежденной базе данных. Т.е. неверно восстановленной, в неверной кодировке.

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Календарь
«    Ноябрь 2019    »
ПнВтСрЧтПтСбВс
 123
45678910
11121314151617
18192021222324
252627282930 
Опрос на сайте
Совершаете ли вы покупки в интернет?

Популярные новости
Архив новостей
Сентябрь 2019 (2)
Май 2019 (3)
Апрель 2019 (1)
Март 2019 (3)
Февраль 2019 (2)
Январь 2019 (2)