我有许多 XML 文件,我想用脚本处理它们,将它们从它们所采用的任何编码转换为 UTF-8。
使用 this great answer 中给出的代码我可以进行转换,但如何读取 XML header 中给出的编码?
例如,我有很多文件已经是 UTF-8 格式,应该单独放置:
<?xml version="1.0" encoding="utf-8"?>
但是,我有很多确实需要转换的文件:
<?xml version="1.0" encoding="windows-1255"?>
如何在 Python 中检测这些文件的 header 中指定的 XML 编码?更好的是,在我检测并重新编码文件后,我如何才能将此 XML header 更改为读取“utf-8”以避免将来处理它?</p>
最佳答案
使用lxml
进行解析;然后你可以访问原始编码:
from lxml import etree
with open(filename, 'r') as xmlfile:
tree = etree.parse(xmlfile)
if tree.docinfo.encoding == 'utf-8':
# already in correct encoding, abort
return
然后您可以使用 lxml
以 UTF-8 格式再次写出文件。
关于python - 读取 XML 头编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25796238/