【问题标题】:unicodedata.unidata_version prints wrong unicode version?unicodedata.unidata_version 打印错误的 unicode 版本?
【发布时间】:2012-11-28 15:59:07
【问题描述】:
>>> 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实际输出的版本还是我误解了什么?

【问题讨论】:

    标签: python string unicode


    【解决方案1】:

    您将终端可以打印的内容与 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'
    

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

    【讨论】:

    • 顺便说一句,你知道 Linux 检查终端使用的 unicode 版本的命令吗?
    • @Bentley4:问题出在终端使用的 font 上。 cl.cam.ac.uk/~mgk25/unicode.html 能回答你这方面的问题吗?
    • 阅读这么多文本所需的努力与我现在获得该问题的答案的需要不成比例:)。要是有这样的命令就好了。但是感谢您提供的资源(+1),我可能会稍后阅读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多