>>> 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。
但是当我转到list of newly added unicode chars in version 5.2.0并打印此类字符时,无法识别:
>>> print u"\u0803"
ࠃ
然而,Chars from 5.1.0被认可:
>>> print u"\u03CF"
Ϗ
所以,我应该总是计算一个版本低于unicodedata.unidata_version
实际输出的版本,还是我误解了什么?
答案 0 :(得分: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'
具有讽刺意味的是,我的浏览器使用的字体没有为任何一个代码点定义图像。您的帖子为我显示了两个占位符字符: