2011-06-30 23 views
8

Pythonでルーマニア語を含むファイルをfile.readline()で読み込んでいます。 エンコードのために多くの文字に問題があります。UnicodeDecodeError: 'ascii'コーデックがデコードできない

例:

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

私はCP500など、UTF-8でエンコードを()しようとしましたが、それは動作しません。

正しい文字コードが見つかりません。使用する必要があります。

ありがとうございます。

編集:目的はdictionnaryにファイルから単語を格納することで、「abera \ xc8 \ x9bie」aberaţieを取得していないし、それを印刷するときに何をしようとする

答えて

15

これはバイトのセットです:

BYTES = 'abera\xc8\x9bie' 

それが文字列「aberaţie」のutf-8エンコーディングを表しバイトのセットです。あなたデコードあなたの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' 
関連する問題