Автор Гілка: Неправильне сортування е/є в uk_UA.UTF-8  (Прочитано 24109 раз)

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
чи знає хтось чому е/є в українській локалі мають однакову позицію при сортуванні?

echo -e "євгеніка\nебонітовий\nепатаж" | LC_COLLATE=uk_UA.UTF-8 sort
ебонітовий
євгеніка
епатаж

Fedora 35 (x86-64)

keithfay

  • Гість
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #1 : 2014-08-13 10:37:25 »
Знайшов подібне питання:
http://unix.stackexchange.com/questions/17198/where-has-my-uniq-or-sort-u-line-gone-with-some-unicode-characters
Дійсно доволі дивно. Правильний результат дає наступна команда:
yaroslav@Zensor-A:~$ echo -e "євгеніка\nебонітовий\nепатаж\nЄвропа\nєдність\nеластичність" | LANG=С sort
Європа
ебонітовий
еластичність
епатаж
євгеніка
єдність
А при сортуванні із параметром LANG=uk_UA.UTF-8, сортується за другою літерою.

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #2 : 2014-08-13 18:43:15 »
LANG=С - неприйнятно, бо локаль C працює з байтами
поки не поладимо uk_UA, прийнятний варіант видає en_US.UTF-8
Fedora 35 (x86-64)

Відсутній Re.

  • Загальний модератор
  • Літератор
  • *****
  • дописів: 1898
  • Карма: +1/-0
« Змінено: 2014-08-13 21:32:22 від Re. »

Відсутній Re.

  • Загальний модератор
  • Літератор
  • *****
  • дописів: 1898
  • Карма: +1/-0
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #4 : 2014-08-13 21:30:25 »
А де добродій Лісівка? Він же винуватець. Ховається? ::)

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Fedora 35 (x86-64)

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #6 : 2014-08-20 06:40:28 »
Там ще одне питання є чи дійсно треба ігнорувати м’який знак при сортуванні (те що зараз робиться)?
Бо, звичайно, можна сказати що так буде правильно і навести аргументи, але схоже в офіційних документах/словниках м’який знак має фіксовану позицію при сортуванні. Тож, якщо українська локаль буде мати порядок відмінний від офіційного це може призвести до неочікуваних результатів.

Як на мене, якщо вже бути послідовним і дійсно не вважати м’який знак літерою, то й місце він мусить займати останнє, а зараз з одного боку сортування кладе ь перед ю, а з іншого ігнорує його при пом’якшенні літер.
Fedora 35 (x86-64)

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #7 : 2014-08-20 17:46:14 »
Там ще одне питання є чи дійсно треба ігнорувати м’який знак при сортуванні (те що зараз робиться)?
Бо, звичайно, можна сказати що так буде правильно і навести аргументи, але схоже в офіційних документах/словниках м’який знак має фіксовану позицію при сортуванні. Тож, якщо українська локаль буде мати порядок відмінний від офіційного це може призвести до неочікуваних результатів.

Як на мене, якщо вже бути послідовним і дійсно не вважати м’який знак літерою, то й місце він мусить займати останнє, а зараз з одного боку сортування кладе ь перед ю, а з іншого ігнорує його при пом’якшенні літер.
Підтримую.
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #8 : 2014-08-20 18:41:55 »
закинув оновлену латку, яка також виправляє порядок м’якого знаку
Fedora 35 (x86-64)

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #9 : 2014-09-08 21:22:52 »
Додав до латки тести для локалі uk_UA.
Маю прохання, хто може зайти і ввічливо копнути (ланка на ваду), напр., запитавши чи є шанс, що закинуть виправлення до випуску glibc 2.21
Fedora 35 (x86-64)

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #10 : 2014-09-08 21:25:44 »
Додав до латки тести для локалі uk_UA.
Маю прохання, хто може зайти і ввічливо копнути (ланка на ваду), напр., запитавши чи є шанс, що закинуть виправлення до випуску glibc 2.21
1. Дякую.
2. Немає сенсу, у Правіна немає права доступу до запису у сховище.
3. Навряд, код уже заморожено, скоріше впишуть до наступного випуску (у лютому 2015 року), якщо хтось взагалі зглянеться (там після відходу Уве якась анархія).
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #11 : 2014-09-09 18:32:34 »
Додав до латки тести для локалі uk_UA.
Маю прохання, хто може зайти і ввічливо копнути (ланка на ваду), напр., запитавши чи є шанс, що закинуть виправлення до випуску glibc 2.21
1. Дякую.
2. Немає сенсу, у Правіна немає права доступу до запису у сховище.
3. Навряд, код уже заморожено, скоріше впишуть до наступного випуску (у лютому 2015 року), якщо хтось взагалі зглянеться (там після відходу Уве якась анархія).
Кепсько, може спробувати через процес внесків ?
Fedora 35 (x86-64)

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #12 : 2014-09-09 18:37:38 »
Додав до латки тести для локалі uk_UA.
Маю прохання, хто може зайти і ввічливо копнути (ланка на ваду), напр., запитавши чи є шанс, що закинуть виправлення до випуску glibc 2.21
1. Дякую.
2. Немає сенсу, у Правіна немає права доступу до запису у сховище.
3. Навряд, код уже заморожено, скоріше впишуть до наступного випуску (у лютому 2015 року), якщо хтось взагалі зглянеться (там після відходу Уве якась анархія).
Кепсько, може спробувати через процес внесків ?
Можливо, я не пробував.
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #13 : 2014-09-10 00:05:35 »
Відсилати латки до локалей тре в поштове коло glibc-locale, і схоже туди вже автоматично відіслано латку з вади. Тож лишається лише копати їх періодично:

Цитата
14. Ping and keep pinging

If your patch is not reviewed it may just mean that the reviewers are busy. Please ping and keep pinging the patch on a weekly basis.

але там така кількість автоматично генерованих листів, що сумніваюся, що хтось значний його пильно переглядає. Хіба що Ульриху написати персонально...  :-/
Fedora 35 (x86-64)

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Неправильне сортування е/є в uk_UA.UTF-8
« Відповідей #14 : 2015-01-02 07:34:42 »
Написав мейнтейнерам, відповів Joseph Myers, відправив курити інструкції

Ніби зробив і відіслав в поштову групу

До речі, схоже в ICU є проблема з сортуванням: не ігноруються апострофи (жоден з трьох), і не ігнорується дефіс... Схоже й там тре про ваду писати...
Fedora 35 (x86-64)