2010-06-23 62 views
2

蟒:麻煩打印短UTF編碼的字符串

(被使用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

必須有一些與你的終端設置; ua在我的終端(OS X上的Terminal.app)上打印三個希伯來字符,正好是最右邊的三個字符ub。 (因爲希伯來文是從右到左的腳本,最右邊的三個字符是前三個字符)。

爲了記錄,我用Python 2.6.1試了一下。

+0

嗯,你是對的!仍然很奇怪,但至少現在我可以繼續工作。 :) 謝謝! (對於任何後來遇到這個問題的人,我使用的是IDLE 2.6.1) – user374121 2010-06-23 11:50:33