| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Великий русский в MySQL! |
| Автор: Glorious 28.3.2005, 18:27 | ||||
| Добрый вечер! Не работает у меня сравнение русских символов. Помогите плиз разобраться. Версия MySQL 4.1.10. Путем долгих попыток, я определил, что среди всех маленьких символов русского алфавита, для MySQL символы 'б' и 'в' равны. Запустите mysql.exe и напишите:
ответом будет
Т.е. эти символы равны. Для других символов все нормально. (Но среди больших букв есть также такие "глючные" символы, например 'А' и 'Р'.). Если же использовать koi8r, то в этой кодировке есть другие символы, которые тоже равны между собой. Здесь уже поднималась тема, близкая к данной http://forum.vingrad.ru/index.php?showtopic=45685&st=15. Другой трабл: LIKE выборка. Для английского текста, LIKE регистро-независим, а для русского - зависим! Нехорошо... Кто-нибудь может поделиться знаниями? Спасибо. |
| Автор: Mal Hack 28.3.2005, 18:37 | ||
В my.ini или conf |
| Автор: Kesh 28.3.2005, 19:55 | ||
|
| Автор: Mal Hack 28.3.2005, 20:03 |
| Kesh А это куда? И в чем именно "отвечает"? Т.е. дефолтная кодировка для сравнений или как? |
| Автор: Glorious 28.3.2005, 20:41 |
| Ребята! У меня все именно так и есть. Пожалуйста, выполните команду select 'б' = 'в'; Тут не все так просто. Я уверен, что ответом сервера у Вас будет число 1 (см.выше). Только если у Вас ответ 0 - Вы счастливый человек! Делитесь! |
| Автор: DENNN 29.3.2005, 08:51 | ||||
| Когда руки кривые и документацию читать более лениво, чем спрашивать не такое бывает Все прекрасно работает. Специально для тебя сделал:
Результат - 0. (При этом чувствоал себя полным дураком, пока набирал.) Ищи причины у себя, нечего на MySQL валить. Проверь, что ты вообще корректно вбиваешь эту строку. Так если работаешь через терминал в котором русская кодировка не поддерживается, то он их заменит на одинаковую кроказябру. Если ставил на винде - там не такие чудеса бывают. Если посмотришь параметры запуска mysqld или, как тебе тут подсказывали, my.ini, то увидишь как задается кодировка по умолчанию. Если откроешь документацию или зайдешь на сайт mysql, то можно найти массу внятной и доходчивой информации о локализации БД в mysql. В частности, начиная с версии 4.1 при создании таблицы существует параметр
|
| Автор: Glorious 29.3.2005, 11:21 | ||||
| Все началось именно с версий 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 29.3.2005, 11:43 | ||||||
Дык, вот ты и расскажи как у тебя что стоит. Явно что ты просто где-то инсталлятор взял. Как твой mysql был собран ты знаешь? Включена ли была при сборке локаль cp1251? Есть ли в его служебных файлах файлы перекодировки для cp1251 и win1251(оставлены из соображений совместимости)? М.б. их прото нет или они повреждены? Короче: откуда есть взялся твой сервер БД? Отвечая на вопрос: нет, у меня винда не стоит. Более того, раз попробовав запустить сервер на *NIX, переходить обратно на винду очень не хочется
Что еще раз говорит в пользу предположении об отсутствии поддержки именно в твоем дистрибутиве либо испорченных служебных файлах. |
| Автор: Cetus 4.4.2005, 10:22 |
| в %Windows%\My.ini пропиши default-character-set=win1251 |