Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LIKE и русские буквы, глюки... 
V
    Опции темы
=Женек=
Дата 23.1.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Версия MySQL 4.04. При поиске с помощью LIKE записей, начинающихся на кириллические символы происходит фигня. На букву "И" например выдается все что есть на букву "К". Кодировка в MySQL - win-1251 русская. Никаких других проблем нет. Даже сортирует русские буквы правильно, а вот LIKE....


PM MAIL   Вверх
Kesh
Дата 23.1.2006, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



Посмотри collation...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
SergeBS
Дата 23.1.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 2
Всего: 22



=Женек=
Не твой случай?
Цитата

6.3.2.1. Функции сравнения строк
...
В следующих двух примерах показано, что сравнение строк производится с учетом регистра, если ни один из операндов не является строкой с двоичными данными:

mysql> SELECT 'abc' LIKE 'ABC';
        -> 1
mysql> SELECT 'abc' LIKE BINARY 'ABC';
        -> 0

Да, что за версия 4.04? Обычно - 4.0.1...4.1.21, т.е. 2-е число - одна цифра. 3-е - может быт и 2.

PM MAIL   Вверх
Gold Dragon
Дата 23.1.2006, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



=Женек=
А посмотреть на запрос можно?
Код

SELECT *
FROM `baza`
WHERE `name` LIKE 'и%'
LIMIT 0 , 30

я проверял у себя, всё отлично работает


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
DENNN
Дата 23.1.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



collation есть только в последних версиях mySQL.
Для более ранних версий при компиляции явно указывается кодировка по умолчанию, либо, если сервер собран с поддержкой всех кодировок при страте нужно указать кодировку по умолчанию:
Код

/usr/local/bin/mysqld --user=mysql --......  --default-character-set=cp1251

PM ICQ   Вверх
Gold Dragon
Дата 23.1.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



у меня были проблемы с кодировкой, правда малость другие, но может пригодиться.. Я теперь подключаюсь так
Код

mysql_connect($SERVER, $USER, $PASSW) or die("Ошибка соединения");
mysql_query("SET NAMES cp1251;");
mysql_select_db($DB);



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
DENNN
Дата 23.1.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Цитата(Gold Dragon @ 23.1.2006, 15:40 Найти цитируемый пост)

Код

mysql_query("SET NAMES cp1251;");


Уже сказал - для тех кто пользуется последними версиями сервера БД проблема в принципе не стоит.
В более ранних версиях такой код выдаст ошибку.

PM ICQ   Вверх
Gold Dragon
Дата 23.1.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



DENNN
Более ранние - это какие? До < 4.x ?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
=Женек=
Дата 23.1.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



У меня 4.0.4 - проблема стоит.
SET names не помогло. Нельзя ли поподбробней про COLLATION ?

К слову - в PHPMyAdmin все работает.
PM MAIL   Вверх
=Женек=
Дата 23.1.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Хм... прблема решилась следующим образом:

mysql.ini
Код

#default-character-set=koi8_ru 
default-character-set=cp1251 


А еще я грохнул индексы на всякий случай. Все заработало.

Причем в Mysql самом в кодировках - я через PHPMyAdmin смотрел - ничего не изменилось с кодировками...

Да, знаю - мне скажут - вот, надо смотреть было с самого начала, с чем mysql работает. Не знаю, но до добавления этих строк у меня все было нормально с роусскими буквами и в моих проложениях и в PHPMyAdmin - как с отображением, так и с сортировкой русских букв.
PM MAIL   Вверх
DENNN
Дата 24.1.2006, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Цитата(=Женек= @ 23.1.2006, 17:05 Найти цитируемый пост)

Не знаю, но до добавления этих строк у меня все было нормально

"Не говори гоп ...." smile
На самом деле проблема осталась - достаточно запустить какой-нибудь скрипт, работающий с данными в KOI8-R.
Иными словами, одновременная работа двух баз с разными кодировками и сортировкой по алфавиту затруднительна на старых версиях БД.
Цитата(Gold Dragon @ 23.1.2006, 16:41 Найти цитируемый пост)

Более ранние - это какие? До < 4.x ?

Кажется у 4.1 эта фишка появилась. Т.е. у самой последней версии перед пятёркой, щас точно не помню, нужно документацию ковырять на COLLATION для CREATE TABLE.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.