强制编码不良XML文件与ElementTree

2 投票
2 回答
1579 浏览
提问于 2025-04-16 13:31

一大堆XML文件的编码设置错了。应该是utf-8,但里面却到处都是latin-1的字符。处理这些内容的最佳方法是什么呢?

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

补充说明:这个问题出现在Adobe InDesign的IDML文件中,似乎“内容”部分的文本是latin-1编码,而其他部分可能是utf-8。我打算先用utf-8正常解析,然后把“内容”部分的Unicode文本重新编码成utf-8,再用latin-1重新解析。真是一团糟。

2 个回答

1

在解析文件的时候,不要试着去解决编码问题,而是先处理一下那些有问题的文件。

2

你可以在解析XML时覆盖其中指定的编码方式:

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

Element 是用于构建XML源数据的结构,基于expat解析器。HTML中有一些预定义的实体。当前的实现不支持这个标志。target 是目标对象。如果不指定,构建器会使用标准的TreeBuilder类的一个实例。编码 1 是可选的。如果提供了这个值,它会覆盖XML文件中指定的编码。

文档

撰写回答