Некоректная работа Regexp в русской кодировке.

w_v_w

Новичок
Некоректная работа Regexp в русской кодировке.

Пользуясь функцией Regexp или rlike запрос проходит вроде нормально, НО если встречается буква "я" или "ч", то функции чуствительны к регистру. (тип text без всяких binary).
Пример:

Select t_firma from firma where t_firma regexp "Яко";
и
Select t_firma from firma where t_firma regexp "яко";

выдаст разные результаты..
 

440hz

php.ru
w_v_w
русских кодировок много. 8)
какие ипользуются в базе, таблице и коннекте + версия MySQL
 

w_v_w

Новичок
Mysql 4.1 в базе итаблице и в конекте latin1, но самое интересное что и в самой консоли MySql такие запросы непроходят(конечно же пишу не русскими буквами, а "эрогрифами", но строго соответственно).
Самое интересное что все остальные буквы и символы работают корректно.
 

w_v_w

Новичок
Но там нет и "и", "т" и т.д., я так понимаю он переводит в эрогриф, соответственно и назад, у меня в таблице есть и руские столбцы и с латинские...
 

440hz

php.ru
w_v_w
mysql ничерта не знает о буквах и их смысловом значении. 8) в общем переключись на русскую кодировку и будь счастлив.
 

w_v_w

Новичок
базу, таблицу и конект в кодировку cp1251, базу с помощью Config Wizard, my.ini проверил default-character-set=cp1251, таблицы стали все по умолчанию cp1251, ну и конект...
 

440hz

php.ru
w_v_w
что коннект? 8) если все в 1251 тогда все должно работать. какие трудности? поведение такое же осталось?
Код:
mysql> select TITLE from NEWS where TITLE regexp "Яко";
+--------+
| TITLE  |
+--------+
| Яков 1 |
| Яков 2 |
| яков 3 |
| Яков 4 |
+--------+
4 rows in set (0.00 sec)

mysql> select TITLE from NEWS where TITLE regexp "яко";
+--------+
| TITLE  |
+--------+
| Яков 1 |
| Яков 2 |
| яков 3 |
| Яков 4 |
+--------+
4 rows in set (0.00 sec)
покажи
mysqladmin -p var | grep char

у меня правда UTF-8. 8)
Код:
| character_set_client            | utf8                                                       |
| character_set_connection        | utf8                                                       |
| character_set_database          | utf8                                                       |
| character_set_results           | utf8                                                       |
| character_set_server            | utf8                                                       |
| character_set_system            | utf8                                                       |
dev(root):/var/db/mysql#>cat /var/db/mysql/my.cnf | grep utf8
character_set_client = utf8
character-set-server = utf8
default-character-set = utf8
default-collation = utf8_general_ci
collation-server = utf8_general_ci
 

w_v_w

Новичок
Ладно спасибо за наведения на нужный путь, извеняюсь за мою возможную неведомость, буду пробывать детальней разбираться в кодировках...

-~{}~ 13.01.06 16:23:

File STDIN:
| character_set_client | cp125
|
| character_set_connection | cp125
|
| character_set_database | cp125
|
| character_set_results | cp125
|
| character_set_server | cp125
|
| character_set_system | utf8

Как последний поменять?
 

w_v_w

Новичок
Уже собрал с utf-8, получилось как у тебя...
Но почему то все в таких же "эроглифах", ну это ладно это уже больше к настройкам комаандной строки наверное, но проблема не исчезает?

-~{}~ 13.01.06 16:50:

да таблицу тоже изменил:
alter database mainbase charset=cp1251

-~{}~ 13.01.06 16:51:

тоесть utf-8 :)

-~{}~ 13.01.06 16:57:

после set names utf8 получил

+-------------------------------------------------------------------------------
-----+
| t_firma
|
+-------------------------------------------------------------------------------
-----+
| ├Ф├Р├С├У├Д├П├О├А├О ├К├░├╗├м├░├е├м├▒├▓├░├о├й├▓├░├е├▒├▓
|
| ├У├п├░├а├в├л├е├н├и├е ├г├о├▒.├▒├л├│├ж├б├╗ ├о├╡├░├а├н├╗
|
| ├М├М├П ├Ч├П ├А├л├л├а-├П├░├и├м├а
|
| ├С├е├й├▒├м├и├╖├е├▒├к├и├й ├и├н├▒├▓├и├▓├│├▓ ├г├е├о├┤├и├з├и├к├и ├А├Н ├У├к├░├а├и├н
├╗ . |
| ├Ч├П ├П├л├а├╖├и├н├д├а ├Т.├Н.
|
| ├О├А├О ├П├░├и├м├о├░├е├╢
|
| ├С├п├е├╢.├╕├к├о├л├а-├и├н├▓├е├░├н├а├▓ ├д├л├┐ ├▒├л├а├б├о├▒├л├╗├╕├а├╣├и├╡ ├д├е├▓├
е├й. |
| ├Ф├е├о├д.├г├о├░.├к├о├л├л├е├г├и├┐ ├а├д├в├о├к├а├▓├о├в
|
| ├Ф├е├о├д├о├▒.├о├▓├д. ├К├░├╗├м├г├о├▒├┤├и├л├а├░├м├о├н├и├┐
|
| ├С├П├Т├У-18
|
+-------------------------------------------------------------------------------
-----+
10 rows in set (0.00 sec)

-~{}~ 13.01.06 17:11:

Да чем болше узнаюшь, тем лучше понимаешь что ничего незнаешь.


У меня это сильно горит, я конечно извеняюсь за мое ламерство, но очень нужно разобраться:

Есть дамп на latin1 конечно, нужно его корректно переделать, видимо
alter database mainbase charset=utf8
не совсем корректен.
Ну и чтоб это все заработало, сервер на utf8 я уже перевел, а вот дальше?

У меня админская чать на php, а простые юзеры с помошью программы, на Делфи написанной, пользуються...
 
Сверху