python:麻烦打印短utf编码的字符串

时间:2010-06-23 11:21:21

标签: python unicode python-2.x

(以下是使用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解析一个网页 - 我无法分辨为什么有些段落可以读出而其他段落没有。)

1 个答案:

答案 0 :(得分:1)

必须是您的终端设置; ua在我的终端上打印了三个希伯来字符(OS X上的Terminal.app),正好是ub的最右边三个字符。 (由于希伯来语是一个从右到左的脚本,最右边的三个字符是前三个。)

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