The Unicode collation algorithm (UCA) is an algorithm defined in Unicode Technical Report #10, which is a customizable method to produce binary keys from strings representing text in any writing system and language that can be represented with Unicode. These keys can then be efficiently byte-by-byte compared in order to collate or sort them according to the rules of the language, with options for ignoring case, accents, etc.
Unicode Technical Report #10 also specifies the Default Unicode Collation Element Table (DUCET). This data file specifies a default collation ordering. The DUCET is customizable for different languages. Some such customisations can be found in the Unicode Common Locale Data Repository (CLDR).
An open source implementation of UCA is included with the International Components for Unicode, ICU. ICU supports tailoring, and the collation tailorings from CLDR are included in ICU. The effects of tailoring and many language-specific tailorings are displayed in the on-line ICU Locale Explorer.
- ICU Locale Explorer [link broken as of 2021-10-10] An online demonstration of the Unicode Collation Algorithm using International Components for Unicode
- an ICU collation demo that's still up as of 2021-10-10
- msort A sort program that provides an unusual level of flexibility in defining collations and extracting keys.