首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在docxtpl (DocxTemplate)和Jinja2中使用UTF-8

在docxtpl (DocxTemplate)和Jinja2中使用UTF-8
EN

Stack Overflow用户
提问于 2020-11-12 16:49:21
回答 1查看 126关注 0票数 4

我正在使用docxtpl和Jinja2生成docx文档。正如手册中解释的那样,我通过使用来自XML文件的数据提供的python矩阵/字典生成了它。当XML文件存储拉丁-1数据时,我的docx可以很好地生成,但是当内容是utf-8编码(如波兰语)时,Jinja2或docxtpl不会保留这种编码,并且docx显然没有很好地格式化。

如何传递编码选项或圈出此问题?

我的过程非常简单:

代码语言:javascript
复制
doc = DocxTemplate(<my_jinja2_docx_template>)
doc.render(<my_dictionnary_with_data>)
doc.save(<my_docx_file>)

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2021-11-16 16:59:04

请看https://github.com/elapouya/python-docx-template/blob/master/docxtpl/template.py上的DocxTemplate类的源代码。似乎没有更改编码参数的选项。但是,您可以通过创建自己的子类并替换类的xml_to_string方法来添加该功能。这似乎就是指定编码的地方。子类的语法如下所示:

代码语言:javascript
复制
class NewDocxTemplate(DocxTemplate):
    def xml_to_string(self, xml):
        return etree.tostring(xml, encoding=<your_encoding_here>, pretty_print=False)

然后实例化NewDocxTemplate()而不是DocxTemplate()DocxTemplate()中的所有方法都将继承,但您更改的方法除外。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64800602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档