Главная » DLE » Статьи DLE » Избавляемся от знаков «????» после установки скрипта
Распечатать статью

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

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

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

Источник:  dle-news.ru
Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи