Python 如何使用jinja2渲染umlauts?

Python 如何使用jinja2渲染umlauts?,python,jinja2,diacritics,Python,Jinja2,Diacritics,我正在尝试用jinja2渲染一些基本的UMLAUT test.html <!doctype html> <link type="text/css" rel="stylesheet" href="style.css"/> <meta charset="UTF-8"> <h3>Umlauts: ä ü ö</h3> <!doctype html> <link type="text/css" rel="stylesheet

我正在尝试用jinja2渲染一些基本的UMLAUT

test.html

<!doctype html>
<link type="text/css" rel="stylesheet" href="style.css"/>
<meta charset="UTF-8">
<h3>Umlauts: ä ü ö</h3>
<!doctype html>
<link type="text/css" rel="stylesheet" href="style.css"/>
<meta charset="UTF-8">
<h3>Umlauts: ä ü ö</h3>
现在我不明白如何让jinja正确处理umlauts。我该怎么做?我使用的是流,因为在我的实际用例中,我提供了一些数据来填充,然后将其转储到html中显示

编辑:我想要的是可能的吗?据我所知,这不是吗

无法使用Jinja2处理非Unicode数据。这个 原因是Jinja2已经在该语言上使用Unicode 水平。例如,Jinja2将非中断空间视为有效 表达式中需要编码知识的空格 或对Unicode字符串进行操作


使用Python3,您可以使用
open
指定编码

from jinja2 import Template

file = open("test.html", 'r', encoding='utf-8')
data = file.read()
Template(data).stream().dump('index.html')
对于Python2,可以使用io模块指定编码

import io

file = io.open("test.html", 'r', encoding='utf-8')

您几乎肯定想在这里指定编码,如中所述。这没有帮助。
呢?没有。这也不起作用。您如何检查输出文件?这看起来就像您只是使用一个为Latin-1配置的查看器来查看实际上完全正确的UTF-8文本。也许还可以看到更详细的解释。啊,这是我的问题,谢谢,我觉得这是jinja的问题。@Hakaishin:
dump()
在编写时默认使用
UTF-8
,所以是的,您的问题在于输入。如果您使用的是Python3,
open()
函数与
io.open()
函数是一样的,您只是忘记了指定正确的编码(此时使用的是系统默认值)。@Hakaishin:事实上,我几乎可以肯定您必须使用Python3,否则会出现解码错误。@Hakaishin,马蒂恩·皮特斯是对的。我据此编辑了我的答案。
import io

file = io.open("test.html", 'r', encoding='utf-8')