Сортировка и collation: как сравниваются тексты
Коротко: Collation определяет, как строки сравниваются и сортируются: регистр, диакритика, правила языка. Она решает, окажется ли «ä» до «z» или после.
Подробнее: Компьютеры сравнивают текст не по алфавиту, а по правилам. Простые правила (по кодовой точке) быстры, языково корректные (Unicode collation) сложнее, но осмысленнее для людей.
Подробности
- Двоичная: Сравнение по значению байта или кодовой точки. «Z» идёт перед «a», «ä» в самом конце. Быстро, но непривычно для пользователей.
- С учётом языка: Немецкий сортирует «ä» вместе с «a», шведский — в конце алфавита. В базах данных как
de_DE,utf8mb4_unicode_ci,und-x-icuи т. д. - Уровни: С учётом регистра или без (
ci/cs), с учётом диакритики или без (ai/as). - Последствия: Уникальность (
UNIQUE) зависит от collation: «Anna» и «anna» приciсчитаются равными. Индексы зависят от collation. - Обновление: Если версия операционной системы или библиотеки меняет правила сортировки, индексы могут стать недействительными (PostgreSQL предупреждает об этом).
- Программирование: Сравнение строк по умолчанию в языках программирования обычно двоичное. Для списков для пользователей используйте
Intl.Collator,locale.strxfrmи подобное.