【问题标题】:python: trouble printing short utf-encoded stringspython:打印短 utf 编码的字符串时遇到问题
【发布时间】:2010-06-23 11:21:21
【问题描述】:

(以下使用Python 2.6.1)

我有 2 个字符串:

>>> a = u'\u05e8\u05db\u05e1'
>>> b = u'\u05e8\u05db\u05e1 \u05d4\u05d9\u05d0 \u05de\u05d0\u05d9\u05e8\u05d4 \u05d1\u05e4\u05e0\u05e1'

我对它们进行编码:

>>> ua = a.encode('utf-8')
>>> ub = b.encode('utf-8')
>>> ua
'\xd7\xa8\xd7\x9b\xd7\xa1'
>>> ub
'\xd7\xa8\xd7\x9b\xd7\xa1 \xd7\x94\xd7\x99\xd7\x90 \xd7\x9e\xd7\x90\xd7\x99\xd7\xa8\xd7\x94 \xd7\x91\xd7\xa4\xd7\xa0\xd7\xa1'

并尝试打印:

>>> print ua
רכס
>>> print ub
רכס היא מאירה בפנס

为什么ub 用希伯来字符打印,而ua 不打印? ua 只是 ub 的前几个字符,所以似乎字符串长度是某种问题,这很奇怪。

(为了记录,这是试图用 BeautifulSoup 解析网页的结果——我不知道为什么有些段落可读而其他段落没有。)

【问题讨论】:

    标签: python unicode python-2.x


    【解决方案1】:

    必须与您的终端设置有关; ua 在我的终端(OS X 上的 Terminal.app)上打印三个希伯来字符,正好是 ub 最右边的三个字符。 (因为希伯来语是从右到左的文字,所以最右边的三个字符是前三个)。

    为了记录,我已经用 Python 2.6.1 尝试过。

    【讨论】:

    • 嗯,你是对的!仍然很奇怪,但至少现在我可以继续工作。 :) 谢谢! (对于以后遇到这个问题的任何人,我使用的是 IDLE 2.6.1)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多