Позбавляємося від знаків ???? після установки скрипта

Продовжуємо публікацію серії корисних порад по роботі з движком. На цей раз опишемо найбільш популярне питання: “А чому у мене ??? замість тексту новин”.

І так ви встановили скрипт і з подивом виявили що у вас ??? замість російського тексту, то звичайно в першу чергу йдуть гнівні питання авторам скрипта. Хоча я б на вашому місці впершу чергу поставив би це питання вашого хостера. Мені наприклад цікаво чому у хостерів в Росії локаль за замовчуванням в 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([email protected]_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([email protected]_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/. Це кеш з бази даних.
111

SHARE
Previous articleDLE-Asset — Автозавантаження стилів і скриптів в шаблон
Next articleОновлення WYSIWYG для версії 9.6