Python中的示例:
>>> s = 'ı̇'
>>> len(s)
2
>>> list(s)
['ı', '̇']
>>> print(", ".join(map(unicodedata.name, s)))
LATIN SMALL LETTER DOTLESS I, COMBINING DOT ABOVE
>>> normalized = unicodedata.normalize('NFC', s)
>>> print(", ".join(map(unicodedata.name, normalized)))
LATIN SMALL LETTER DOTLESS I, COMBINING DOT ABOVE
如您所见,NFC标准化不会将无点i
+点组成正常i
。这有什么理由吗?这是疏忽吗?或者它不包括在内,因为NFC应该是NFD的完美反转(并且不希望将i
分解为无点i
+点)。
答案 0 :(得分:3)
虽然NFC不是完美的反转"对于NFD,这是根据与NFD相同的分解映射来定义NFC。 NFC基本上定义为NFD,然后重新组合某些NFD分解对。由于LATIN SMALL LETTER I没有分解映射,因此它永远不会是重组的结果。