Приветствую.
Обращаюсь за помощью, прошу сильно не пинать, так как знаю, что тем по данному вопросу очень много, но мне не удалось найти ответ. Возможно по-тому, что у меня какой то "индивидуальный" форум...
История такова, форум уже трижды переезжал, кто то помогал (уже не помню в чем), в общем каша полная - таблицы и в
latin1_swedish_ci и в
cp1251_general_ci и в
utf8_general_ci.
Недавно созрел на "отходную" к третьей линейке, посмотрел, почитал статьи и решил вначале привести БД в порядок.
Установил
Sypex Dumper Pro 2.0.11 и с помощью этой удивительной программы конвертировал всю базу в
utf8_general_ci, затем в config заменил строку:
PHP код:
$config['Mysqli']['charset'] = 'ср1251';
на
PHP код:
$config['Mysqli']['charset'] = 'utf8';
и вроде как все заработало, но заметил, что выросла нагрузка на сервер.
Решил пересмотреть все файлы (синхронно) те, что на сервере и те, что в папке vBulletin у меня на компе.
Нашел разницу в файле
class_core.php
в оригинальном файле начиная со строки 322 так:
PHP код:
if (function_exists('mysql_set_charset'))
{
mysql_set_charset($charset);
}
else
{
$this->sql = "SET NAMES $charset";
$this->execute_query(true, $link);
}
}
return $link;
а в моем вот так:
PHP код:
/*if (function_exists('mysql_set_charset'))
{
mysql_set_charset($charset);
}
else
{
$this->sql = "SET NAMES $charset";
$this->execute_query(true, $link);
}*/
$this->sql = "SET character_set_client='cp1251'";
$this->execute_query(true, $link);
$this->sql = "SET character_set_results='cp1251'";
$this->execute_query(true, $link);
$this->sql = "SET NAMES cp1251";
$this->execute_query(true, $link);
$this->sql = "SET collation_connection='cp1251_general_ci'";
$this->execute_query(true, $link);
}
return $link;
Далее со строки 1323 так:
i
PHP код:
f (!empty($charset))
{
if (function_exists('mysqli_set_charset'))
{
mysqli_set_charset($link, $charset);
}
else
{
$this->sql = "SET NAMES $charset";
$this->execute_query(true, $link);
}
}
return (!$connect) ? false : $link;
}
у меня в файле так:
PHP код:
if (!empty($charset))
{
if (function_exists('mysqli_set_charset'))
{
mysqli_set_charset($link, $charset);
}
else
{
$this->sql = "SET NAMES $charset";
$this->execute_query(true, $link);
}
$this->sql = "SET character_set_client='cp1251'";
$this->execute_query(true, $link);
$this->sql = "SET character_set_results='cp1251'";
$this->execute_query(true, $link);
$this->sql = "SET NAMES cp1251";
$this->execute_query(true, $link);
$this->sql = "SET collation_connection='cp1251_general_ci'";
$this->execute_query(true, $link);
}
return (!$connect) ? false : $link;
}
Я так понимаю, что это принудительно кто то мне прописал, поскольку я в этом не силен, ясное дело, что по моей просьбе.
Заливаю на сервер оригинальный
class_core.php - форум слетает, остается тоько шапка с такими символами (Рё РїСЂРё необходимости обновите данные.)
В конфиге комментирую //$config['Mysqli']['charset'] = 'utf8'; - форум заработал, только вместо текста (???????????????) название тем (************?? ?? ************************ ******************?), те же звездочки вместо текста в постах.
До этого в админке при редактировании в языках установлено windows-1251, меняю на UTF8 - ничего не меняется.
Помогите пожалуйста, буду весьма благодарен.
P.S. в phpMyAdmin в таблицах, например post, открываю любой и там кириллица отображается как надо.
P.S.S При написании нового текста кириллицей (в блоке предупреждений о закрытии) новый текст отображается корректно!
