![]() |
|
Модераторы: skyboy |
![]()
|
|
| Glorious |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.3.2005 Репутация: нет Всего: нет |
Добрый вечер!
Не работает у меня сравнение русских символов. Помогите плиз разобраться. Версия MySQL 4.1.10. Путем долгих попыток, я определил, что среди всех маленьких символов русского алфавита, для MySQL символы 'б' и 'в' равны. Запустите mysql.exe и напишите:
ответом будет
Т.е. эти символы равны. Для других символов все нормально. (Но среди больших букв есть также такие "глючные" символы, например 'А' и 'Р'.). Если же использовать koi8r, то в этой кодировке есть другие символы, которые тоже равны между собой. Здесь уже поднималась тема, близкая к данной сортировка Order By, по столбцу с русским текстом. Другой трабл: LIKE выборка. Для английского текста, LIKE регистро-независим, а для русского - зависим! Нехорошо... Кто-нибудь может поделиться знаниями? Спасибо. |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
В my.ini или conf |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 15 Всего: 54 |
-------------------- ![]() |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Kesh
А это куда? И в чем именно "отвечает"? Т.е. дефолтная кодировка для сравнений или как? |
|||
|
||||
| Glorious |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.3.2005 Репутация: нет Всего: нет |
Ребята!
У меня все именно так и есть. Пожалуйста, выполните команду select 'б' = 'в'; Тут не все так просто. Я уверен, что ответом сервера у Вас будет число 1 (см.выше). Только если у Вас ответ 0 - Вы счастливый человек! Делитесь! |
|||
|
||||
| DENNN |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Когда руки кривые и документацию читать более лениво, чем спрашивать не такое бывает
Все прекрасно работает. Специально для тебя сделал:
Результат - 0. (При этом чувствоал себя полным дураком, пока набирал.) Ищи причины у себя, нечего на MySQL валить. Проверь, что ты вообще корректно вбиваешь эту строку. Так если работаешь через терминал в котором русская кодировка не поддерживается, то он их заменит на одинаковую кроказябру. Если ставил на винде - там не такие чудеса бывают. Если посмотришь параметры запуска mysqld или, как тебе тут подсказывали, my.ini, то увидишь как задается кодировка по умолчанию. Если откроешь документацию или зайдешь на сайт mysql, то можно найти массу внятной и доходчивой информации о локализации БД в mysql. В частности, начиная с версии 4.1 при создании таблицы существует параметр
Это сообщение отредактировал(а) DENNN - 29.3.2005, 08:54 |
||||
|
|||||
| Glorious |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.3.2005 Репутация: нет Всего: нет |
Все началось именно с версий 4.1.x. До этих версий я успешно работал с русскими кодировками. DENN, а у тебя действительно была версия 4.1.x, и у тебя стоит Винда?
У меня такие неккоректные сравнения происходят и из программ C/C++, и из терминала mysql.exe. Кодировку я устаналивал всеми способами - и через my.ini, и через явную установку --defaults-file для сервиса mysql-nt.exe. Все эти установки аналогичны SQL командам
либо
также (выполняя труд вышеуказанных команд) я вручную задавал каждую переменную, отвечающую за кодировку символов, такие как character_set_client и collation_connection и проч. Любой из этих способов делал одно - символы действительно корректно отображались, но сортировка не работала... И чудеса с буквами ("б" и "в"). Конечно, сортировать можно и используя binary - но это же нехорошо... Что я делаю не так? Спасибо! |
||||
|
|||||
| DENNN |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Дык, вот ты и расскажи как у тебя что стоит. Явно что ты просто где-то инсталлятор взял. Как твой mysql был собран ты знаешь? Включена ли была при сборке локаль cp1251? Есть ли в его служебных файлах файлы перекодировки для cp1251 и win1251(оставлены из соображений совместимости)? М.б. их прото нет или они повреждены? Короче: откуда есть взялся твой сервер БД? Отвечая на вопрос: нет, у меня винда не стоит. Более того, раз попробовав запустить сервер на *NIX, переходить обратно на винду очень не хочется
Что еще раз говорит в пользу предположении об отсутствии поддержки именно в твоем дистрибутиве либо испорченных служебных файлах. |
||||||
|
|||||||
| Cetus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 18.4.2004 Репутация: 1 Всего: 1 |
в %Windows%\My.ini пропиши
default-character-set=win1251 --------------------
Легко внести изменения в код.Трудно сделать это корректно. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |