За последние 24 часа нас посетили 20056 программистов и 1648 роботов. Сейчас ищут 666 программистов ...

utf-8 и сортировка (MySQL)

Тема в разделе "MySQL", создана пользователем Danilevsky, 24 мар 2006.

  1. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    Возник следующий вопрос. Использую кодировку utf-8, MySQL 5.
    Украинский язык сортируется неправильно (первая почему-то идет украинская буква "i", а потом уже а, б итд.) Русский язык сортуриеться как надо. коллатион - utf-8 general_ci
    Подскажите, что делать!?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Danilevsky
    а у тебя не украинская i а английская
     
  3. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    440hz, да, буквы конечно внешне очень похожи, но в базе чисто украинские буквы "і". Я так понял MySQL думает что это английские буквы. Но все же как его заставить понять обратное? Может какие настройки есть?
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Danilevsky
    какой код у украинской i ? 8)

    p.s. cp1251_ukrainian_ci - Украинский, нечувствительный к регистру
     
  5. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    440hz, i английская 105, і украинская 209.
    дело в том что у меня 4 языка разных совешенно, поэтому использую юникод.
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Danilevsky
    дай пример слов и как их надо отсортировать?
     
  7. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    440hz вот в таком порядке у меня это сортируется
    Іспанська
    Англійська
    Арабська
    Українська

    это у меня сортировка по алфавиту :)
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Danilevsky
    э-э-э тут-то они в cp1251. сделай двмп этой таблички c этим полем в UTF8 и замыль мне на 440hz@php.ru ? я у себя посмотрю.

    а хотя нет ... ща проверим ...
     
  9. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    440hz
    таблица отправлена на мыло
     
  10. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Danilevsky
    Код (Text):
    1. CREATE TABLE `txt` (
    2.   `txt` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL default ''
    3. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    4.  
    5. --
    6. -- Дамп данных таблицы `txt`
    7. --
    8.  
    9. INSERT INTO `txt` VALUES ('Іспанська');
    10. INSERT INTO `txt` VALUES ('Англійська');
    11. INSERT INTO `txt` VALUES ('Арабська');
    12. INSERT INTO `txt` VALUES ('Українська');
    Код (Text):
    1. SELECT * FROM `txt` order by txt
    вот так правильно?
    Англійська
    Арабська
    Іспанська
    Українська
     
  11. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    оно?

    Код (Text):
    1. CREATE TABLE `p_languages` (
    2.   `iso` char(2) character set latin1 collate latin1_general_ci NOT NULL default '',
    3.   `ru` varchar(60) character set utf8 collate utf8_unicode_ci NOT NULL default '',
    4.   `uk` varchar(60) character set utf8 collate utf8_unicode_ci NOT NULL default '',
    5.   PRIMARY KEY  (`iso`)
    6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    SELECT * FROM `p_languages` order by uk

    Код (Text):
    1.       AZ Азербайджанский Азербайджанська
    2.       EN Английский Англійська
    3.       AR Арабский Арабська
    4.       BE Белорусский Білоруська
    5.       BG Болгарский Болгарська
    6.       VI Вьетнамский В'єтнамська
    7.       HY Армянский Вірменська
    8.       EL Греческий Грецька
    9.       DA Датский Датська
    10.       ET Эстонский Естонська
    11.       HE Иврит Іврит
    12.       ES Испанский Іспанська
    13.       IT Итальянский Італійська
    14.       KK Казахский Казахська
    15.       ZH Китайский Китайська
    16.       KO Корейский Корейська
    17.       LV Латышский Латиська
    18.       LT Литовский Литовська
    19.       MO Молдавский Молдавська
    20.       NL Нидерландский Нідерландська
    21.       DE Немецкий Німецька
    22.       NO Норвежский Норвезька
    23.       FA Персидский Перська
    24.       PL Польский Польська
    25.       PT Португальский Португальська
    26.       RU Русский Російська
    27.       RO Румынский Руминська
    28.       SR Сербский Сербська
    29.       SK Словацкий Словацька
    30.       TG Таджикский Таджицька
     
  12. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    440hz, спасибо огромное!! сортирует
     
  13. verdyan

    verdyan Активный пользователь

    С нами с:
    25 окт 2007
    Сообщения:
    1
    Симпатии:
    0
    Здраствуйте. у меня аналогичная проблема с армянским языком
    вывод наладил все работает только проблема с сортировкой прямо в запросе мускула
    Ա Բ Գ Դ Ե Զ ... Օ Ֆ
    перепробовал все коллации не помогает
    регистрочувствительность не работает
    последние две буквы лезут в начало
    уже задумываусь переписать
    чарсет карту :(
    Код (Text):
    1.  
    2. CREATE TABLE `MOB` (
    3.   `id` int(11) NOT NULL auto_increment,
    4.   `ZHM` varchar(10) collate utf8_unicode_ci default NULL,
    5.   `fio` varchar(100) collate utf8_unicode_ci default NULL,
    6.   PRIMARY KEY  (`id`)
    7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci PACK_KEYS=0 AUTO_INCREMENT=29 ;
    8.  
    9. --
    10. -- Дамп данных таблицы `MOB`
    11. --
    12.  
    13. INSERT INTO `MOB` VALUES (17, '323', 'Ф±Ф±Ф±');
    14. INSERT INTO `MOB` VALUES (27, '323', 'Ф¶Ф¶Ф¶');
    15. INSERT INTO `MOB` VALUES (28, '323', 'Х©Х©Х©');
    16. INSERT INTO `MOB` VALUES (10, '123', 'ФІФІФІ');
    17. INSERT INTO `MOB` VALUES (15, '323', 'ФіФіФі');
    18. INSERT INTO `MOB` VALUES (25, '323', 'ФµФµФµ');
    помогите хотя бы советом