提问人:zzzbbx 提问时间:5/8/2012 最后编辑:Mr_and_Mrs_Dzzzbbx 更新时间:9/22/2017 访问量:95635
使用 Python 3 的 readlines() 处理 Unicode 错误
Unicode error handling with Python 3's readlines()
问:
我在读取文本文件时不断收到此错误。是否可以处理/忽略它并继续?
UnicodeEncodeError:“charmap”编解码器无法解码0x81位置的字节 7827:字符映射到 undefined。
答:
-5赞
cobie
5/8/2012
#1
是的。。你可以把它包在一个
try:
....
except UnicodeEncodeError:
pass
79赞
Charles Duffy
5/8/2012
#2
在 Python 3 中,在创建文件对象时传递一个适当的值(例如 or)(假设它是 -- 的子类,如果不是,请考虑将其包装在一个子类中!此外,请考虑传递比(当您不确定时,始终是一个好的起点)更有可能的编码。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
2赞
optixx
5/8/2012
#3
您应该使用编解码器打开文件,以确保文件被解释为 UTF8。
import codecs fd = codecs.open(filename,'r',encoding='utf-8') data = fd.read()
评论