У меня не работает регистронезависимый поиск. Для русских он работает как регистрозависимый. таблицы созданы в utf8, сравнение utf8_general_ci пробовал сравнивать приводя поле к верхнему или нижнему регистру - тоже не срабатывает. При этом на английском все работает. ИМХО, это одно поля ягоды. Если заставить работать функции LOWER() и UPPER() -- заработает и LIKE. как быть? Помогите плыз.
_ci - case-insensetive. Если для русских букв не работает, используйте LOWER(`field`) = LOWER("value")
версия виднозная mysql> select version(); +---------------+ | version() | +---------------+ | 5.0.16-nt-log | +---------------+ 1 row in set (0.03 sec)
Неожиданный поворот дела такой. все записи в таблицу вносятся через мой php-скрипт. И назад отдаются через него. Я подозреваю, что проблема в нем - он как-то транскодит запись перед тем, как засунуть ее в БД, и декодирует, после того, как извлек. вобщем в БД кодировка получается четырехбайтовая - я сохранил результат запроса в файл и смотрел его. но на выходе из php-скрипта опять двухбайтовая и правильная -- все работает -- я открыл в браузере результат вывода php и сохранил в файл и посмотрел в hex тоже самое, кстати, получатся если добавлять записи через phpmyadmin -- в БД тоже кодировка 4х байтовая оказывается. и тот же phpmyadmin ее потом неверно показывает - почему-то в "обратную сторону" не конвертит. теперь осталось понять что не так с php
хотя может я и ошибаюсь. судя по статье http://ru.wikipedia.org/wiki/%D0%9A%D1% ... 1%80%D1%8B у меня происходит вывод utf8 как windows-1252, это в phpmyadmin
проблема частично решена. помогло переконфигурировать так: [mysqld] default-character-set=utf8 character-set-server=utf8 collation-server=utf8_general_ci init-connect="SET NAMES utf8" skip-character-set-client-handshake [mysqldump] default-character-set=utf8 [client] default-character-set = utf8 самое интересное, что когда я аналогичные этим команды давал из моего скрипта, то ничего не работало.