2013-09-16 82 views
15

我在編碼utf-8中的字符時遇到麻煩。我使用的是Django,當我嘗試使用非純文本發送Android通知時出現此錯誤。我試圖找出錯誤的來源,並設法弄清楚錯誤的來源不在我的項目中。UnicodeDecodeError:'ascii'編解碼器無法解碼位置0中的字節0xe7:序號不在範圍內(128)

在Python Shell,I型:

'ç'.encode('utf8') 

,我得到這個錯誤:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128) 

我得到同樣的錯誤有:

'á'.encode('utf-8') 
unicode('ç') 
'ç'.encode('utf-8','ignore') 

我得到smart_text錯誤,force_text和smart_bytes。

這是Python,我的操作系統或其他問題嗎?

我在紅帽版本4.4.7-3

回答

20

您試圖編碼/解碼字符串,而不是Unicode字符串。以下聲明確實有效:

u'ç'.encode('utf8') 
u'á'.encode('utf-8') 
unicode(u'ç') 
u'ç'.encode('utf-8','ignore') 
3

使用u'...'運行的Python 2.6.6,而u前綴是字節字符串不是unicode字符串:

>>> u'ç'.encode('utf8') 
'\xc3\xa7' 
相關問題