【问题标题】:Forcing encoding on bad XML files with ElementTree使用 ElementTree 对错误的 XML 文件强制编码
【发布时间】:2011-03-11 16:05:45
【问题描述】:

大量 XML 文件定义了错误的编码。它应该是 utf-8,但内容到处都是 latin-1 字符。解析此内容的最佳方法是什么?

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

编辑:这发生在 Adob​​e InDesign IDML 文件中,似乎“内容”文本具有 latin-1,但其余的可能是 utf-8。我倾向于使用 utf-8 进行正常解析,然后将 Content 中的 Unicode 文本块重新编码为 utf-8,然后使用 latin-1 重新解析。真是一团糟。 ಠ_ಠ

【问题讨论】:

    标签: python xml encoding


    【解决方案1】:

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

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

    Element XML 源数据的结构构建器, 基于 expat 解析器。 html是 预定义的 HTML 实体。这个标志是 当前不支持 执行。 target 是目标 目的。如果省略,则构建器使用 标准的一个实例 树生成器类。编码1 是 选修的。如果给定,值 覆盖指定的编码 XML 文件。

    docs

    【讨论】:

    • 啊,我试过了,但出错了。似乎它是 python 2.7 中的新功能。谢谢
    【解决方案2】:

    在解析过程中不要尝试处理编码问题,而是预处理有问题的文件。

    【讨论】:

    • 这可能比我想象的要复杂,而且文件中可能有一些真正的 UTF-8 内容。我将不得不从 Unicode 取消编码为 utf-8,然后针对可能发生的特定位置强制重新解析 latin-1。
    猜你喜欢
    • 2014-06-26
    • 2015-03-31
    • 2012-02-17
    • 1970-01-01
    • 2013-04-02
    • 2010-09-18
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多