You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解析XML生成HTML时重音字符编码乱码如何解决

问题根因

你定位的问题位置错误,乱码和XML读取逻辑无关,问题出在输出HTML文件的打开逻辑:
你调用open("generatedHTML.html", "w")时没有显式指定编码,Python 3的open函数在文本模式下默认使用操作系统的默认编码(Windows环境下通常为GBK/CP1252),导致你从XML中读取到的正确UTF-8重音字符,写入HTML时被错误编码,最终出现乱码。

修复方案

只需要修改输出HTML文件的打开语句,显式指定UTF-8编码即可:

# 原代码
f = open("generatedHTML.html", "w")
# 修改为
f = open("generatedHTML.html", "w", encoding="utf-8")

可选优化建议

  • 可以省去手动打开XML文件的步骤,直接把文件路径传给ET.parse,让ElementTree自动读取XML头部的编码声明进行解析,避免手动指定编码和XML实际编码不符的问题:
# 原代码
with open(archivoXML, 'r', 1, 'utf-8') as xml_file:
    arbol = ET.parse(xml_file)
# 可替换为
arbol = ET.parse(archivoXML)
  • 写入HTML的用户生成内容建议先经过html.escape转义,避免特殊字符破坏HTML结构或者出现注入风险:
import html
f.write('\t\t<p> Persona: ' + html.escape(hijo.attrib['nombre']) + ' ' + html.escape(hijo.attrib['apellido']) + '</p>\n')

内容的提问来源于stack exchange,提问作者diegogs_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:24:05