统一码测序算法
演算法
统一码测序算法(英语:Unicode collation algorithm,缩写:UCA)是统一码技术报告 #10 中定义的一种算法,它是一种可自定义的方法。对任何以统一码表示的字符串文本,不论是使用哪种文字和语言,都可为其生成二进制键。这些键可以逐字节且有效地比对,从而可以根据语言规则为他们测序或排序。这个过程中,还提供可以忽略大小写、重音等的选项。
统一码技术报告 #10 还定义了默认统一码测序元素表(英语:Default Unicode Collation Element Table,缩写:DUCET)。此文件定义了默认的排列顺序。 DUCET 可针对不同语言进行定制。可以在通用当地数据存储库(英语:Common Locale Data Repository,缩写:CLDR)中找到一些此类自定义。
国际统一码部件(ICU)中包含了 UCA 的开源实现件。 ICU 支持裁剪,来自 CLDR 的整理裁剪包含在 ICU 中。剪裁效果和许多语言特定的剪裁效果显示在在线ICU 区域设置浏览器中。
目标问题
不同语言及文化,可能使用不同的排序方式,对相同的字符,德国人、法国人、瑞典人使用不同的方式排序。不同的应用,也可能使用不同的排序,譬如字典、电话簿和索引目录。对于非字母文字,如东亚表意文字,排序也可能根据声音或外形。此外,排序也可能根据习惯,如忽略标点符号、大写在小写前(或反过来)。
语言 | 瑞典 | z < ö |
德国 | ö < z | |
应用 | 德国字典 | of < öf |
德国电话簿 | öf < of | |
用户习惯 | 大写优先 | A < a |
小写优先 | a < A |
多层级比较
统一码测序算法归纳出了多层级的比较方式。
等级 | 描述 | 例子 |
---|---|---|
L1 | 基本 | role < roles < rule |
L2 | 重音符 | role < rôle < roles |
L3 | 大小写或变体 | role < Role < rôle |
L4 | 标点符号 | role < “role” < Role |
Ln | role < ro□le < “role” |
另见
- Collation
- ISO/IEC 14651
- 欧洲订购规则(EOR)
- 通用当地数据存储库(CLDR)