在读取文本文件时,我一直遇到这个错误。是否可能处理/忽略它并继续进行?
可以处理此错误并继续进行吗?UnicodeEncodeError:'charmap'编解码器无法解码位置7827处的字节0x81:字符映射到未定义。
在读取文本文件时,我一直遇到这个错误。是否可能处理/忽略它并继续进行?
可以处理此错误并继续进行吗?UnicodeEncodeError:'charmap'编解码器无法解码位置7827处的字节0x81:字符映射到未定义。
errors=
值(例如errors=ignore
或errors=replace
),假设该对象是io.TextIOWrapper
的子类(如果不是,请考虑将其包装在其中!)。此外,考虑传递比charmap
更常见的编码(当您不确定时,utf-8
始终是一个好的起点)。f = open('misc-notes.txt', encoding='utf-8', errors='ignore')
在Python 2中,read()
方法返回的是字节(bytes)数据;因此,解码这些数据以将其转换为字符串(如果您确实想要字符而不是字节)是比较关键的。如果您不知道字节数据的真实编码方式,可以采用以下策略:your_string.decode('utf-8', 'replace')
...用于替换未处理的字符,或者
your_string.decode('utf-8', 'ignore')
可以简单地忽略它们。
话虽如此,找到并使用它们的真正编码(而不是猜测 utf-8
)会更好。
fileobj.encoding
(以及 fileobj.errors
用于错误处理模式); 只要 fileobj
是 TextIOWrapper
,就应该可以工作。 - Charles Duffy为确保文件以UTF8编码进行解释,您应该使用codecs打开文件。
import codecs fd = codecs.open(filename,'r',encoding='utf-8') data = fd.read()
是的,你可以用
来包装它。try:
....
except UnicodeEncodeError:
pass