您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Python从法语的Word文档中提取XML的问题:生成了非法字符

使用Python从法语的Word文档中提取XML的问题:生成了非法字符

问题是,你不小心改变的编码word/document.xmltemplate2.docxword/document.xml(来自template.docx)最初被编码为UTF-8(这是XML文档的认编码)。

xmlString = zip.read("word/document.xml").decode("utf-8")

但是,当您复制它时,会将template2.docx编码更改为 CP-1252 。根据有关的文档open(file, "w")

在文本模式下,如果未指定编码,则使用的编码取决于平台:调用locale.getpreferredencoding(False)以获取当前的语言环境编码。

您指示调用locale.getpreferredencoding(False)给您正在编写cp1252的编码word/document.xml

由于您没有显式添加<?xml version="1.0" encoding="cp1252"?>到的开头word/document.xml,因此Word(或任何其他XML读取器)会将其读取为 UTF-8 而不是 CP-1252 ,这将导致出现非法的XML字符错误

因此,您要在写入时通过使用参数指定为 UTF-8 的编码:encoding``open()

with open(os.path.join(tmpDir, "word/document.xml"), "w", encoding="UTF-8") as f:
    f.write(xmlString)
python 2022/1/1 18:36:41 有255人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶