有关unicode代码点排序的基本原理的信息?

时间:2015-04-28 17:56:31

标签: c unicode

我正在调查https://github.com/JuliaLang/utf8proc/blob/master/utf8proc.c#L397,特别是这个片段:

a = '1221398210p3'
b = a
print(id(a) == id(b)) # True
显然,有一些"排序"继续,但我找不到在Unicode网站上排序的理由(我根本不知道如何搜索它)。

为什么某些属性会先于其他属性,或者它只是一个"规范"排序

1 个答案:

答案 0 :(得分:0)

这是“规范排序算法”,它定义了字符后面的组合标记的单个顺序。问题是可以通过多种方式指定在不同位置(例如,角色上方和下方)具有多个组合标记的字符:

  

ṩ:U+0073 U+0323 U+0307

     

ṩ:U+0073 U+0307 U+0323

规范化文本时,规范排序算法确保ṩ只能出现在第一个顺序中:上方点之前的下方点。由于角色可以组合的方式的数量,这个特定排序的原因(上面的上面)有点随意,但它遵循the order in this table - 它似乎通常是从下到上,左到右右汉字。

该算法的完整规范在Unicode标准的section 3.11中给出。