我可以在python中绕过UnicodeDecodeError吗?

时间:2012-03-06 19:16:06

标签: python xml django parsing illegal-characters

我有一个解析xml文件的python脚本,并返回以下错误:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 614617: character maps to <undefined>

我很确定错误正在发生,因为我试图解析的xml文档中有一些非法字符,但我没有权限直接修复我正在阅读的这个特定的xml文件。

我是否能够拥有它以便这些字符不会使我的脚本失效并允许它保持解析而不会出错?

这是脚本的一部分,就是读取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)

1 个答案:

答案 0 :(得分:7)

当您致电decode()时,您可以传递可选的errors参数。默认情况下,它设置为strict(如果找到无法解析的内容,则会引发错误),但您也可以将其设置为replace(用{{1}替换有问题的字符})或\ufffd(只留下有问题的字符)。

所以它会是:

ignore

或您选择的任何级别。

可以在Python Unicode HOWTO找到更多信息。