2011-06-30 17 views
8

Czytam plik zawierający słowa rumuńskie w języku Python za pomocą file.readline(). Mam problem z wieloma postaciami z powodu kodowania.UnicodeDecodeError: Kodek 'ascii' nie może dekodować

Przykład:

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

Próbowałem zakodować() z UTF-8, CP500 etc, ale to nie działa.

Nie mogę znaleźć odpowiedniego kodowania znaków, którego muszę użyć?

z góry dzięki.

Edit: Celem jest, aby zapisać słowo z pliku w dictionnary, a po wydrukowaniu, aby uzyskać aberaţie a nie „Abera \ xc8 \ x9bie”

Odpowiedz

15

Co chcesz zrobić?

Jest to zestaw bajtów:

BYTES = 'abera\xc8\x9bie' 

Jest to zestaw bajtów, co oznacza utf-8 kodowanie napisu „aberaţie”. Ci dekodowania bajty, aby uzyskać ciąg Unicode:

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

Jeśli chcesz przechowywać ciąg Unicode do pliku, a następnie trzeba kodowania go do określonego formatu bajtów swojego wyboru:

>>> abberation.encode('utf-8') 
'abera\xc8\x9bie' 
>>> abberation.encode('utf-16') 
'\xff\xfea\x00b\x00e\x00r\x00a\x00\x1b\x02i\x00e\x00' 
Powiązane problemy