[pyar] como saco que encoding es este

Sebastian Bassi sbassi en clubdelarazon.org
Lun Jun 14 03:46:07 ART 2010


Estoy leyendo una base vieja (en dbf, usando dbfpy) y me encontré con
datos encodeados de una manera que no puedo saber que encoding tienen.

El código es algo asi:

import dbfpy.dbf

f1 = '/home/sbassi/.../datos.DBF'
dbf1 = dbfpy.dbf.Dbf(f1)
for rec in dbf1:
    print rec[0],rec[1]

Cuando veo esto en la terminal (Ubuntu, con utf-8) veo:

1 Alimentos
2 Librer*a, Pap y *tiles oficina

(el * lo puse yo para simbolizar un signo de pregunta en reversa
adento de un rombo)

Si pruebo leer eso con UTF-8:

for rec in dbf1:
    u = unicode(rec[1],'utf-8')
    print u

Obtengo:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa1 in position 6:
unexpected code byte

Si pongo "latin1" ya no tengo el error, pero me imprime:

Librer¡a, Pap y étiles oficina

Por el contexto es facil darse cuenta que es cada caracter y
convertirlo, pero quisiera saber la manera automatica de resolver esto
sin tener que hacer yo una conversión manual de los caracteres que veo
que estan en una codificación desconocida.



More information about the pyar mailing list