在Python 3中,在创建文件对象时传递一个适当的errors=
值(例如errors=ignore
或errors=replace
)(假定它是- 的子类;io.TextIOWrapper
如果不是,请考虑将其包装在一个对象中!);另外,请考虑传递比charmap
(可能不确定,utf-8
始终是一个好的起点)更可能的编码。
例如:
f = open('misc-notes.txt', encoding='utf-8', errors='ignore')
在Python 2中,该read()
操作仅返回字节;然后,诀窍是将它们解码以将它们放入字符串中(实际上,如果需要,则需要字符而不是字节)。如果您对它们的真实编码没有更好的猜测:
your_string.decode('utf-8', 'replace')
…替换未处理的字符,或
your_string.decode('utf-8', 'ignore')
简单地忽略它们。
也就是说,查找并使用其 实际 编码(而不是猜测utf-8
)将是首选。