try - Manejo de errores de Unicode con líneas de lectura de Python 3()
que hace try en python (3)
Debe abrir el archivo con un códecs para asegurarse de que el archivo se interpreta como UTF8.
import codecs fd = codecs.open(filename,''r'',encoding=''utf-8'') data = fd.read()
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.
Sí ... podrías envolverlo en una
try:
....
except UnicodeEncodeError:
pass
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 codificación 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 codificación 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 codificación real (en lugar de adivinar utf-8
).