====== Неправильные поиск/сортировка русского текста ====== Данный способ решения применим для **MySQL 3.23.xx** и **4.0.xx**. В поздних версиях 4.1 кодировка базы данных задается при ее создании в конструкции CREATE TABLE или меняется позже запросом ALTER TABLE. Данная инструкция будет полезна прежде всего людям, имеющим доступ к файлу конфигурации MySQL сервера и shell. Однако и владельцы shared-hosting аккаунтов могут подробно описать администрации хостинга, что им следует делать, что бы решить проблему. ===== Как убедиться, что сервер настроен не верно? ===== Выполняем в утилите 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).