|
|
|
|
|
|
|
|
|
|
Данный способ решения применим для MySQL 3.23.xx и 4.0.xx. В поздних версиях 4.1 кодировка базы данных задается при ее создании в конструкции CREATE TABLE или меняется позже запросом ALTER TABLE.
Выполняем в утилите mysql (shell) запрос
SHOW VARIABLES LIKE 'character_set';
Получаем такой результат:
+---------------+--------+ | Variable_name | Value | +---------------+--------+ | character_set | latin1 | +---------------+--------+ 1 row in set (0.00 sec)
Проведя данную операцию, мы определили что кодировка, которую использует сервер, latin1. В базе данных наши тексты хранятся в другой кодировке (скорее всего, они в кодировке windows-1251, koi8-ru). Соответсвенно это и вызывает проблем при поиске данных в текстах, так как сервер считает, что все тексты в кодировке latin1.
Нам необходимо выяснить какие кодировки поддерживает сервер, для этого выполняем запрос:
SHOW VARIABLES LIKE 'character_sets';
Результатом будет что-то вроде
+----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | character_sets | latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 | +----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
Выбераем из результатов кодировку в которой хранятся наши данные и редактируем файл my.cnf (*nix - /etc/my.cnf; Windows - c:\my.cnf). В секции [mysqld] указываем параметр default-character-set c выбранным значением.
Например:
[mysqld] default-character-set = cp1251
Делаем рестарт MySQL. В некоторых случаях после этого необходимо переиндексировать таблицы (для этого нужно выполнить запрос REPAIR TABLE tbl_name QUICK; или использовать утилиту myisamchk).
Работает на DokuWiki |