Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сортировка русских букв в utf8 средствами MySQL / 10 сообщений из 10, страница 1 из 1
05.01.2006, 03:39:26
    #33468625
kamuzon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
делаю (образно): select * from tbl1 order by runame

Вопрос, в какой unicode кодировке нужно выставить таблицу, чтобы русские названия сортировались правильно?
utf8_bin самое похожее, но сначала выводит сортированные слова по заглавным русским буквам, а потом по мелким. А хотелось бы, чтобы сортировка была не АБВГД...ЭЮЯабвг...эюя , а АаБбВвГг....ЭэЮюЯя .
utf8_general_ci выводит вообще не пойми что, причём и слова с латинских букв попадаются среди русских.
utf8-swedish_ci тоже выводит криво.

Что я делаю не так и как нужно правильно делать?
...
Рейтинг: 0 / 0
05.01.2006, 03:46:24
    #33468626
kamuzon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
....то ли уже поздно, то ли что, но при более детальном изучении вопроса кодировки utf8_general_ci выяснил, что русские буквы сортируются как АаБбВв, но в них ещё примешиваются латинские буквы, например, латинские ST сортируются после русской Т.

Вопросы остаются такие:
Где вообще про эти сортировки можно почитать подробнее?
И как сделать сортировку 0123...89AaBbCcDd...XxYyZzАаБбВвГг....ЭэЮюЯя средствами MySQL?
...
Рейтинг: 0 / 0
05.01.2006, 04:22:20
    #33468628
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
SELECT ..., LCASE(runame) AS sortorder FROM tbl1 ORDER BY sortorder
?
Однако, к сожалению, есть сомнения, что подобный запрос может использовать индексы и будет сколько-нибудь производителен. В общем, я не гарантирую, что это единственный и оптимальный способ)
В любом случае, я бы советовал вам почитать раздел "MySQL Localization and International Usage" документации, соответствующей используемой вами версии СУБД.
...
Рейтинг: 0 / 0
05.01.2006, 08:14:41
    #33468682
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
попробуй utf8_unicode_ci
...
Рейтинг: 0 / 0
06.01.2006, 01:57:03
    #33469791
kamuzon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
в случае utf8_unicode_ci сортировка получается такой (из тех слов, что у меня есть в базе):
ЧлСтТШst, что явно не соответствует вообще ничему.
...
Рейтинг: 0 / 0
06.01.2006, 13:28:24
    #33470234
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
оч. странно. Вот смотрите:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
mysql> select * from pp order by c;
+---------+
| c       |
+---------+
| S       |
| s       |
| T       |
| t       |
| Алексей |
| алексей |
| Борис   |
| борис   |
| Л       |
| л       |
| С       |
| с       |
| Человек |
| Ш       |
| ш       |
+---------+
15 rows in set (0.00 sec)

mysql> show create table pp\G
*************************** 1. row ***************************
       Table: pp
Create Table: CREATE TABLE `pp` (
  `c` varchar(20) character set utf8 collate utf8_unicode_ci default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

...
Рейтинг: 0 / 0
06.01.2006, 13:47:48
    #33470269
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
Мне кажется, что вы делаете просто ALTER TABLE без конвертирования строк.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
07.01.2006, 15:28:41
    #33471237
kamuzon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
Дропал таблицу и создавал заново и вносил строки - эффект тот же (это при utf8_general_ci) - латинские буквы st среди русских, другие пока не проверял.

2Хрен: у тебя "ENGINE=InnoDB DEFAULT CHARSET=latin1", а вовсе не UTF8, не знаю правда как сказываются настройки для всей таблицы на строки в этой таблице.

PS У меня FreeBSD-6.0 STABLE и MySQL 4.1.16
...
Рейтинг: 0 / 0
08.01.2006, 21:42:21
    #33472077
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
Вы что, гражданин?
Описание поля посмотрите
Код: plaintext
1.
2.
`c` varchar( 20 ) character set utf8 collate utf8_unicode_ci default NULL

...
Рейтинг: 0 / 0
08.01.2006, 22:54:41
    #33472125
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка русских букв в utf8 средствами MySQL
kamuzonне знаю правда как сказываются настройки для всей таблицы на строки в этой таблице.приоритет объявления поля, ессно, выше.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сортировка русских букв в utf8 средствами MySQL / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]