2011-06-30 23 views
8

estoy leyendo un archivo que contiene palabras rumanos en Python con file.readline(). Tengo problemas con muchos caracteres debido a la codificación.UnicodeDecodeError: códec 'ascii' no puede decodificar

Ejemplo:

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

He intentado codificar() con UTF-8, CP500, etc, pero no funciona.

no puedo encontrar que es el carácter correcto de codificación que tengo que usar?

gracias de antemano.

Editar: El objetivo es almacenar la palabra de archivo en un dictionnary, y cuando imprimirlo, para obtener aberaţie y no 'Abera \ XC8 \ x9bie'

Respuesta

15

¿Qué estás tratando de hacer?

Este es un conjunto de bytes:

BYTES = 'abera\xc8\x9bie' 

Es un conjunto de bytes que representa una codificación utf-8 de la cadena "aberaţie". Usted decodificación los bytes para obtener su cadena Unicode:

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

Si desea almacenar la cadena Unicode a un archivo, entonces usted tiene que codificar a un formato de byte particular de su elección:

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