我想打印一個unicode字符串,其中沒有特定的編碼十六進制。我從Facebook上獲取這個數據,該數據在UTF-8的html標頭中有一個編碼類型。當我打印這個類型 - 它說它的unicode,但是當我嘗試用unicode-escape解碼時,說有編碼錯誤。爲什麼在我使用解碼方法時嘗試編碼?解碼函數嘗試編碼Python
代碼
a='really long string of unicode html text that i wont reprint'
print type(a)
>>> <type 'unicode'>
print a.decode('unicode-escape')
>>> Traceback (most recent call last):
File "scfbp.py", line 203, in myFunctionPage
print a.decode('unicode-escape')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 1945: ordinal not in range(128)
這不是他錯誤的原因。他正在嘗試解碼一個unicode對象。由於您從二進制數據解碼爲Unicode數據,因此Python 2將首先*編碼*它,它使用ascii編解碼器進行編碼。這就是失敗。 – 2011-01-26 11:49:43
@Lennart Regebro:其實我懷疑他的字符串的實際類型是`str`,而不是`unicode`。看看他如何初始化字符串 - 注意沒有`u`。我認爲他所擁有的不是一個unicode字符串,而是一個* unicode-escaped *字符串(不一樣!)。這是他試圖解碼unicode。如果我的理論是正確的,那麼我認爲這個答案其實是正確的。 – 2011-01-26 11:55:54