2012-04-20 51 views
8

我在使用Unicode的Python中遇到問題。我需要繪製一個帶有Unicode註釋的圖形。根據tutorial我應該在Unicode中創建我的字符串。我這樣做:Python:創建一個Unicode字符串

annotation = u"%s has %s rev"%(art.title, len(art.revisions)) 

它是在其中有Unicode字符的art.title。有時候,代碼有效,有時會給我下面的錯誤:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128) 

我該如何解決它?

編輯: 我有錯誤後,正是「註釋」行:

File "script.py", line 195, in test_trie 
annotation = u"%s has %s rev"%(art.title, len(art.revisions)) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128) 
+1

'art.title'從哪裏來? – 2012-04-20 00:36:21

+0

你確定錯誤信息是給你的代碼行嗎?我懷疑當你輸出'annotation'時實際發生錯誤。在這種情況下,你能否顯示該代碼行? – jogojapan 2012-04-20 03:26:23

+0

@jogojapan是的,請參閱編輯問題。 – ashim 2012-04-20 03:40:50

回答

5

我認爲這取決於如果你的標題有一個Unicode字符或沒有。

我會嘗試加入art.title.encode("utf-8")art.title.decode("utf-8"),看看它是如何工作的

4

你有兩種選擇:要麼使用art.title.decode('utf_8'),或unicode(art.title, 'utf_8')創建一個新的Unicode字符串使用UTF-8編碼。

+0

這兩個表達式做同樣的事情,'decode'將是我的選擇。對於類似的情況,請參閱http://stackoverflow.com/questions/7585435/best-way-to-convert-string-to-bytes-in-python-3 – 2012-04-20 03:59:39