2011-06-30 220 views
8

我正在用file.readline()讀取包含Python中羅馬尼亞單詞的文件。 由於編碼,我遇到了許多字符的問題。UnicodeDecodeError:'ascii'編解碼器無法解碼

例子:

>>> a = "aberație" #type 'str' 
>>> a -> 'abera\xc8\x9bie' 
>>> print sys.stdin.encoding 
UTF-8 

我已經試過編碼()使用UTF-8,CP500等,但它不工作。

我無法找到哪個是正確的字符編碼我必須使用?

在此先感謝。

編輯:目的是從文件中的字存儲在dictionnary,進行打印時,獲得aberaţie而不是「abera \ xc8 \ x9bie」

回答

15

你到底想幹什麼?

這是一組字節:

BYTES = 'abera\xc8\x9bie' 

這是一組字節代表一個utf-8編碼字符串「aberaţie」的。您解碼字節,讓您的unicode字符串:

>>> BYTES 
'abera\xc8\x9bie' 
>>> print BYTES 
aberație 
>>> abberation = BYTES.decode('utf-8') 
>>> abberation 
u'abera\u021bie' 
>>> print abberation 
aberație 

如果你想存儲unicode字符串到一個文件,那麼你必須編碼到您選擇的特定字節格式:

>>> abberation.encode('utf-8') 
'abera\xc8\x9bie' 
>>> abberation.encode('utf-16') 
'\xff\xfea\x00b\x00e\x00r\x00a\x00\x1b\x02i\x00e\x00' 
相關問題