Сортування та 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тощо.