Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка в UTF - е и ё

Сообщения:  [1-10] 

 
 автор: smust   (04.01.2010 в 11:37)   письмо автору
 
   для: Eugene77   (18.12.2009 в 21:28)
 

У меня получается в таблицах как минимум по три национальных кодировки...
Без utf сортировать вообще нереально...

  Ответить  
 
 автор: Eugene77   (18.12.2009 в 21:28)   письмо автору
 
   для: smust   (17.12.2009 в 08:05)
 

Я тоже в начале пытался всё на UTF-8 делать, но именно из-за сортировки пришлось отказаться от этой идеи.
Страницы можно оставить в UTF-8, но таблицы делать в национальных кодировках.
Если указать явно кодировку соединения с базой, то MySQL сама позаботится о преобразовании запросов из
одной кодировки в другую и ничего дополнительно писать руками не потребуется.

  Ответить  
 
 автор: smust   (17.12.2009 в 08:05)   письмо автору
 
   для: Fractured#   (16.12.2009 в 23:21)
 

Получается что слова в словаре правильно отсортировать невозможно. UTF-отстой.

  Ответить  
 
 автор: Fractured#   (16.12.2009 в 23:21)   письмо автору
 
   для: Trianon   (16.12.2009 в 23:19)
 

Сравнивать с помощью "=" или "<>", другие отношения, конечно, не подходят.

  Ответить  
 
 автор: Trianon   (16.12.2009 в 23:19)   письмо автору
 
   для: Fractured#   (16.12.2009 в 20:45)
 

вот если сравнивать по binary и окажется такая чача.
В ut8_bin весь русский сегмент кириллицы живет между ё и Ё

  Ответить  
 
 автор: Fractured#   (16.12.2009 в 20:45)   письмо автору
 
   для: smust   (16.12.2009 в 20:29)
 

Можно при сортировке использовать COLLATE:
ORDER BY `s` COLLATE utf8_general_ci
, а само поле сделать, например, utf8_bin. Либо наоборот, поле сделать utf8_general_ci, а сравнивать через BINARY, например.

  Ответить  
 
 автор: smust   (16.12.2009 в 20:30)   письмо автору
 
   для: smust   (16.12.2009 в 20:29)
 

SELECT 'ё'>'а' дает 0
SELECT 'ё'<'а' дает 1....

  Ответить  
 
 автор: smust   (16.12.2009 в 20:29)   письмо автору
 
   для: Fractured#   (16.12.2009 в 20:25)
 

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

  Ответить  
 
 автор: Fractured#   (16.12.2009 в 20:25)   письмо автору
 
   для: smust   (16.12.2009 в 20:18)
 

Нужно выбрать сравнение utf8_general_ci или utf8_unicode_ci, и различий между "е" и "ё" не будет.

  Ответить  
 
 автор: smust   (16.12.2009 в 20:18)   письмо автору
 
 

Совсем замучился. обнаружил что MySql считает что алфавит начинается с буквы Ё, а не с буквы А. Различать е и ё различает, но в сортировке не может справиться правильно.
сервер 5.0.85

Что можно придумать?

  Ответить  

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования