|
MySQL - проблемы с кодировкой.
|
|||
---|---|---|---|
#18+
(Я почти уверен, что это FAQ :)) Вот такая проблема: MySQL версии 3.52 при попытке выполнить поиск без учета регистра символов (case insensitive search) в кодировке, отличной от той, которая устанавливается с SET CHARACTER SET DEFAULT; выдаются неправильные результаты. Пример: > SELECT * FROM DocRu WHERE doc LIKE "%блабла%"; если известно, что поле doc типа LONGTEXT, а "блабла" набрано в кодировке Windows-1251, то выводятся также те записи, в которых doc не содержит подстроку "блабла". Если заменить запрос на учитывающий регистр (case sensitive), то результат будет верен: > SELECT * FROM DocRu WHERE doc LIKE BINARY "%блабла%"; Опять таки, это как я понял не баг MySQL, просто при case insensitive поиске он нормализует строку по правилам действующей кодировки, а она не Windows-1251, а при употреблении BINARY никакой нормализации не происходит - просто сравниваются байты - поэтому он и работает. Уверен, что эту проблему уже решали в рунете. Заранее спасибо за любые советы! PS.: В мануале пишут, что дополнительные кодировки можно прописать "by editing the `sql/convert.cc' file in the MySQL source distribution". А без перекомпиляции никак нельзя? :( И на худой конец, где взять необходимую таблицы для sql/convert.cc? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2002, 10:22 |
|
MySQL - проблемы с кодировкой.
|
|||
---|---|---|---|
#18+
На самом деле в документации еще чего много сказано полезного! :) есть такой файл my.cnf лежать может в C:\ или гдето типа /usr/local/ трали-вали и есть такой параметр вызова MySQL --default-character-set=[latin1 | koi8 | win1251 | и много другое] Поэтому ты можешь либо с параметром запускать сам exe либо прописать в my.cnf (есть в дистрибе) но его надо будет положить в c:\my.cnf ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2002, 10:40 |
|
MySQL - проблемы с кодировкой.
|
|||
---|---|---|---|
#18+
mahoune, спасибо!!! mysqld-nt --default-character-set=win1251 сделала свое дело. Но через my.cnf не работает :( Я скопировал c:\mysql\my-small.cnf в c:\my.cnf, прописал там в разделе [mysqld] set-variable = character_set=win1251 Но сервер не загружается! $ net start mysql The MySql service is starting. The MySql service could not be started. A system error has occurred. System error 1067 has occurred. The process terminated unexpectedly. Попробовал закомментить остальные строчки в c:\my.cnf - все равно та же ошибка! А когда комментю set-variable = character_set=win1251 сервак нормально грузится, но мне от этого не легче :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2002, 11:02 |
|
MySQL - проблемы с кодировкой.
|
|||
---|---|---|---|
#18+
Есть такая проблема! Надо указать, помоему, переменную character-set-dir или как-то так она называется! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2002, 11:05 |
|
MySQL - проблемы с кодировкой.
|
|||
---|---|---|---|
#18+
Есть такая, но все та же ошибка :(( character_sets_dir=c:/mysql/share/charsets Я это пробовал ставить и в [myslqd] и в [client], с set-variable и без. Т.к. реальный сервер на линуксе, придется там скрипты менять и в них явно прописывать default-character-set при старте, т.е. в обход my.ini ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2002, 12:03 |
|
|
start [/forum/search_topic.php?author=vlad+vorobiev&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 10673ms |
total: | 10816ms |
0 / 0 |