我正在调查https://github.com/JuliaLang/utf8proc/blob/master/utf8proc.c#L397,特别是这个片段:
a = '1221398210p3'
b = a
print(id(a) == id(b)) # True
显然,有一些"排序"继续,但我找不到在Unicode网站上排序的理由(我根本不知道如何搜索它)。
为什么某些属性会先于其他属性,或者它只是一个"规范"排序
答案 0 :(得分:0)
这是“规范排序算法”,它定义了字符后面的组合标记的单个顺序。问题是可以通过多种方式指定在不同位置(例如,角色上方和下方)具有多个组合标记的字符:
ṩ:
U+0073
U+0323
U+0307
ṩ:
U+0073
U+0307
U+0323
规范化文本时,规范排序算法确保ṩ只能出现在第一个顺序中:上方点之前的下方点。由于角色可以组合的方式的数量,这个特定排序的原因(上面的上面)有点随意,但它遵循the order in this table - 它似乎通常是从下到上,左到右右汉字。
该算法的完整规范在Unicode标准的section 3.11中给出。