我可以绕过python中的UnicodeDecodeError吗?
我有一个python脚本,用于解析xml文件,并返回以下错误:我可以绕过python中的UnicodeDecodeError吗?,python,xml,django,parsing,illegal-characters,Python,Xml,Django,Parsing,Illegal Characters,我有一个python脚本,用于解析xml文件,并返回以下错误: UnicodeDecodeError:“charmap”编解码器无法解码位置614617中的字节0x9d:字符映射到 我很确定发生了错误,因为我试图解析的xml文档中有一些非法字符,但是我没有权限直接修复我正在读取的这个特定xml文件 我是否能够拥有它,这样这些字符就不会绊倒我的脚本,并允许它继续解析而不会出错 这是脚本的一部分,tat正在读取xml并对其进行解码: def ReadXML(self, path): self
UnicodeDecodeError:“charmap”编解码器无法解码位置614617中的字节0x9d:字符映射到
我很确定发生了错误,因为我试图解析的xml文档中有一些非法字符,但是我没有权限直接修复我正在读取的这个特定xml文件
我是否能够拥有它,这样这些字符就不会绊倒我的脚本,并允许它继续解析而不会出错
这是脚本的一部分,tat正在读取xml并对其进行解码:
def ReadXML(self, path):
self.logger.info("Reading XML from %s" % path)
codec = "Windows-1252"
xmlReader = open(path, "r")
return xmlReader.read().decode(codec)
调用时,可以传递可选的errors
参数。默认情况下,它被设置为strict
(如果它发现无法解析的内容,则会引发错误),但您也可以将其设置为replace
(将有问题的字符替换为\ufffd
)或ignore
(仅将有问题的字符删除)
因此,这将是:
return xmlReader.read().decode(codec, errors='ignore')
或者你选择的任何级别
更多信息可以在中找到。我实际上刚刚尝试过:
返回xmlReader.read().decode(codec,'ignore')
,这似乎很好。这和你提到的一样吗?@bigmike7801:如果你看一下,你会发现第二个位置参数是errors
,所以是的,它是一样的。总是鼓励阅读文档。错误是发生在xmlReader中还是发生在您自己的代码中?