MySQL и русский язык
Материал из Verlihub
При использовании MySQL версии 4.1 и выше возникают трудности с поддержкой русского языка. Чтобы их разрешить, сделайте следующее:
1. Выполните команду
ALTER DATABASE имя_базы CHARSET cp1251;
2. Посмотрите, что вернёт команда
SHOW VARIABLES LIKE 'character_set_%';
Если character_set_server и character_set_client равно cp1251, то больше никаких действий не нужно. Иначе следует сделать следующее:
Содержание |
Вариант 1: Настройка сервера MySQL
Задаем кодировку в настройках mysql сервера (как правило файл с настройками - /etc/my.cnf или /etc/mysql/my.cnf)
[mysqld] #Кодировка, в которой содержаться данные в таблицах default-character-set=cp1251 [client] #Кодировка по умолчанию для подключающихся клиентов default-character-set=cp1251
подробнее о кодировке в mysql можно прочитать тут, о файле my.cnf - здесь.
Этот вариант не подходит, если нет возможности изменить конфигурацию сервера MySQL или сервер используется совместно с другими программами, которым такие изменения помешают.
From Splint: Мне помог такой вариант секции[mysqld] default-character-set=cp1251 skip-character-set-client-handshake
From Kompik: От себя добавлю что таблицы должны по комманде
SHOW CREATE TABLE SetupList
Выдавать DEFAULT CHARSET=cp1251
После этого в VerliHub`e все будет нормально отображаться, без этого у меня неверно отображалось имя Security бота.
From InGan: От себя добавлю. мне только помог этот вариант с изменением кодировки работы мускула по умолчанию в FreeBSD у провайдера FirstVDS и не забудьте рестартовать свой сервер, почемуто рестарт мускула не помог.
Вариант 2: lua-скрипт
В случае, когда нет возможности изменить настройку сервера, можно воспользоваться альтернативным решением - выполнить команду
SET NAMES cp1251;
после запуска хаба. Это можно сделать с помощью простого lua-скрипта:
-- Charset workaround script
-- by Shurik
function Main()
VH:SQLQuery("SET names cp1251");
end
Скрипт надо будет разместить в каталоге $VERLIHUB_CFG/scripts. Разумеется, необходим плагин LuaScript. Возможно, что некоторые русскосодержащие параметры, которые зачитываются хабом до загрузки скрипта, при этом не смогут быть нормально отображены, например, имена ботов или фильтры ForbiddenWords.
Вариант 3: исправить кодировку в исходниках
Если не лень поправить исходники, чтобы не трогать mysql, то в файле cmysql.cpp после строчки
mysql_options(mDBHandle,MYSQL_OPT_COMPRESS,0);
вставляем
mysql_options(mDBHandle,MYSQL_INIT_COMMAND,"set names cp1251");
После этого следует сделать make и make install
Примечание: замечено, что в Gentoo это не помогает. Более правильный путь - в следующем варианте.
Вариант 4: патч для поддержки опции db_charset
Идея является продолжением варианта 3. Берём отсюда (или отсюда для более старых версий) этот патч, а в dbconfig прописываем
db_charset = cp1251

