2
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=2, releaselevel='final', serial=0)

>>> import unicodedata
>>> unicodedata.unidata_version
'5.2.0'

这意味着我的 Python 版本应该有 Unicode 5.2.0。

但是,当我转到5.2.0 版中新添加的 unicode 字符列表并打印此类字符时,无法识别:

>>> print u"\u0803"
ࠃ

然而,来自 5.1.0的字符被识别:

>>> print u"\u03CF"
Ϗ

那么我应该总是计算一个版本低于实际输出的版本unicodedata.unidata_version还是我误解了什么?

4

1 回答 1

4

您将终端可以打印的内容与 Python 对 unicode 字符的了解混淆了。

您的终端字体无法识别这些代码点。Python 可以很好地处理它们:

>>> import unicodedata
>>> unicodedata.category(u'\u0803')
'Lo'
>>> unicodedata.name(u'\u0803')
'SAMARITAN LETTER DALAT'
>>> unicodedata.category(u'\u03CF')
'Lu'
>>> unicodedata.name(u'\u03CF')
'GREEK CAPITAL KAI SYMBOL'

具有讽刺意味的是,我的浏览器使用的字体没有为任何一个代码点定义图像。您的帖子为我显示了两个占位符:

两个占位符

于 2012-11-28T16:00:58.307 回答