Manejo de errores de Unicode con líneas de lectura de Python 3 ()

Sigo recibiendo este error mientras leo un archivo de texto. ¿Es posible manejarlo / ignorarlo y proceder?

UnicodeEncodeError: el codec ‘charmap’ no puede decodificar el byte 0x81 en la posición 7827: el carácter se asigna a no definido.

En Python 3, pase un errors= apropiado errors= valor (como errors=ignore o errors=replace ) al crear su objeto de archivo (suponiendo que sea una subclase de io.TextIOWrapper – y si no lo es, considere envolverlo ¡uno!); también, considere pasar una encoding más probable que charmap (cuando no esté seguro, utf-8 siempre es un buen lugar para comenzar).

Por ejemplo:

 f = open('misc-notes.txt', encoding='utf-8', errors='ignore') 

En Python 2, la operación read() simplemente devuelve bytes; El truco, entonces, es decodificarlos para convertirlos en una cadena (si de hecho quieres caracteres en lugar de bytes). Si no tienes una mejor conjetura para su encoding real:

 your_string.decode('utf-8', 'replace') 

… para reemplazar los caracteres no manejados, o

 your_string.decode('utf-8', 'ignore') 

simplemente ignorarlos.

Dicho esto, sería preferible encontrar y usar su encoding real (en lugar de adivinar utf-8 ).

Debe abrir el archivo con un códecs para asegurarse de que el archivo se interpreta como UTF8.

 importar codecs
 fd = codecs.open (nombre de archivo, 'r', encoding = 'utf-8')
 datos = fd.read ()

Sí … podrías envolverlo en una

 try: .... except UnicodeEncodeError: pass