【问题标题】:How does unicodedata.normalize(form, unistr) work?unicodedata.normalize(form, unistr) 是如何工作的?
【发布时间】:2013-01-18 21:30:33
【问题描述】:

在 API 文档中,http://docs.python.org/2/library/unicodedata.html#unicodedata.normalize。它说

返回 Unicode 字符串 unistr 的正常形式 form。表单的有效值为‘NFC’、‘NFKC’、‘NFD’和‘NFKD’。`

文档比较模糊,有人可以用一些例子解释valid values吗?

【问题讨论】:

    标签: python unicode encoding normalization unicode-normalization


    【解决方案1】:

    我发现文档很清楚,但这里有一些代码示例:

    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' (=decompose) 形式都将单个组合字符(如 ä)转换为两个字符(a + 两个点)。两种 'C' (=compose) 形式都是相反的。

    这两种“K”形式用于转换添加到 Unicode 的字符以实现兼容性。例如,为了支持不能在符号周围画圆圈的软件,有一组“圆圈数字”,如①(unicode number 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

    【讨论】:

      猜你喜欢
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 2014-12-09
      • 2018-08-20
      • 1970-01-01
      相关资源
      最近更新 更多