2013-02-04 45 views

回答

23

我找到的文件很清楚,但這裏有一些代碼示例:

from unicodedata import normalize 

print '%r' % normalize('NFD', u'\u00C7') # decompose: convert Ç to "C + ̧" 
print '%r' % normalize('NFC', u'C\u0327') # compose: convert "C + ̧" to Ç 

兩個「d」(=分解)形式轉換爲單個組合字符(如ä)爲兩個字符(a +兩個點)。 'C'(= compose)形式都是相反的。

爲了兼容性的目的,兩個「K」形式用於轉換添加到Unicode的字符。例如,要支持不能在符號周圍繪製圓圈的軟件,有一組「圓圈數字」,如①(統一碼2460)。當我們應用標準分解(NFD)給它,它不會做任何事情:

print '%r' % normalize('NFD', u'\u2460')  # u'\u2460' 

然而,兼容性分解(NFKD)將返回相應的 「兼容」 字:

print '%r' % normalize('NFKD', u'\u2460') # 1 

有關更多詳細信息,請參閱http://en.wikipedia.org/wiki/Unicode_equivalence

相關問題