統一碼定序演算法
演算法
統一碼定序演算法(英語: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)