Collation
Quy tắc so sánh và sắp xếp chuỗi. Định nghĩa thứ tự sắp xếp thay đổi theo ngôn ngữ và văn hóa.
Collation là tập hợp quy tắc dùng để so sánh và sắp xếp chuỗi. Vì thứ tự sắp xếp thay đổi theo ngôn ngữ và văn hóa ngay cả với cùng ký tự, cài đặt collation chính xác là thiết yếu trong các hệ thống quốc tế hóa. Ví dụ, trong tiếng Đức "ö" đứng sau "o", nhưng trong tiếng Thụy Điển nó được đặt sau "z".
Trong cơ sở dữ liệu, collation có thể được chỉ định theo bảng hoặc cột. utf8mb4_unicode_ci của MySQL thực hiện so sánh không phân biệt chữ hoa chữ thường, trong khi utf8mb4_bin thực hiện so sánh nhị phân. Chọn sai collation có thể gây ra thiếu sót kết quả tìm kiếm và lỗi sắp xếp. Ví dụ, với utf8mb4_bin, "A" và "a" được coi là ký tự khác nhau, có thể khiến tìm kiếm tên người dùng thất bại do khác biệt chữ hoa chữ thường. Sách quốc tế hóa cơ sở dữ liệu bao gồm chủ đề này chi tiết.
Sắp xếp tiếng Nhật đặc biệt phức tạp. Nó bao gồm tương đương hiragana-katakana ("あ" và "ア"), xử lý dakuten/handakuten (thứ tự của "は", "ば", "ぱ"), và thứ tự đọc kanji (sắp xếp theo on'yomi hay kun'yomi). CLDR (Common Locale Data Repository) của Unicode chuẩn hóa các quy tắc này, có thể truy cập thông qua thư viện ICU từ các ngôn ngữ lập trình khác nhau.
Trong JavaScript, Intl.Collator cho phép so sánh chuỗi nhận biết locale. Sử dụng new Intl.Collator('ja').compare('あ', 'ア') đạt được thứ tự sắp xếp tiếng Nhật tự nhiên. Mặc dù String.localeCompare() cung cấp chức năng tương tự, tái sử dụng instance Intl.Collator cho hiệu suất tốt hơn khi sắp xếp tập dữ liệu lớn.
Từ góc độ đếm ký tự, collation ảnh hưởng đến tương đương ký tự. Liệu "は" và "ば" được coi là giống nhau, hay "1" toàn chiều rộng và "1" nửa chiều rộng được coi là cùng một ký tự, phụ thuộc vào cài đặt collation. Độ chính xác của tìm kiếm và lọc văn bản phụ thuộc nhiều vào việc chọn collation phù hợp. Sách lập trình quốc tế hóa cung cấp thêm ngữ cảnh.