使用ElementTree强制对错误的XML文件进行编码

时间:2011-03-11 16:05:46

标签: python xml encoding

一大堆XML文件定义了错误的编码。它应该是utf-8但内容在所有地方都有拉丁字符1。解析这些内容的最佳方法是什么?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

编辑:这与Adobe InDesign IDML文件一起发生,似乎“内容”文本有latin-1但其余部分可能是utf-8。我赞成使用utf -8进行正常解析,然后将Content中的Unicode文本块重新编码为utf-8,然后使用latin-1重新解析。真是一团糟。 ಠ_ಠ

2 个答案:

答案 0 :(得分:2)

您可以在解析时覆盖XML中指定的编码:

class xml.etree.ElementTree.XMLParser(html=0, target=None, encoding=None)
     

Element   XML源数据的结构构建器,   基于expat解析器。 HTML是   预定义的HTML实体。这个标志是   当前不支持   实现。 target是目标   宾语。如果省略,则构建器使用   标准的一个实例   TreeBuilder类。编码1是   可选的。如果给定,则为该值   覆盖中指定的编码   XML文件。

docs

答案 1 :(得分:1)

请勿尝试在解析期间处理编码问题,而是预先处理有问题的文件。