(以下使用的是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解析网页的原因-我无法分辨为什么有些段落可读地显示而另一些段落却不可读。)
最佳答案
必须与您的终端设置有关; ua
在我的终端(OS X上的Terminal.app)上打印三个希伯来语字符,恰好是ub
的最右边三个字符。 (由于希伯来语是从右到左的脚本,因此最右边的三个字符是前三个字符)。
作为记录,我已经在Python 2.6.1中进行了尝试。