2011-06-30 28 views
8

Python'da Rumence sözcüklerini içeren bir dosya okuyorum file.readline(). Kodlama nedeniyle birçok karakterle ilgili bir sorunum var.UnicodeDecodeError: 'ascii' codec'i çözemez

Örnek:

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

denedim utf-8, CP500 vs ile kodlamak(), ancak çalışmıyor.

Kullanmak zorunda olduğum doğru Karakter kodlamasını bulamıyorum?

şimdiden teşekkürler.

Düzenleme: amacı dictionnary içinde dosyadan kelime saklamaktır ve 'Abera \ xc8 \ x9bie' aberaţie elde değil etmek, yazdırmadan zaman yapmaya çalışıyorsun ne

cevap

15

?

BYTES = 'abera\xc8\x9bie' 

Bu dize "aberaţie" bir utf-8 kodlamasını temsil bayt kümesi vardır:

Bu

bayt kümesidir. Bir dosyaya Unicode dize saklamak istiyorsanız o zaman sizin seçtiğiniz belirli bir bayt biçimine kodlamak zorunda

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

: Sen kod çözme byte senin unicode dize almak için

>>> abberation.encode('utf-8') 
'abera\xc8\x9bie' 
>>> abberation.encode('utf-16') 
'\xff\xfea\x00b\x00e\x00r\x00a\x00\x1b\x02i\x00e\x00' 
İlgili konular