如何用 jinja2 渲染变音符号?

How to render umlauts with jinja2?

我正在尝试使用 jinja2 渲染一些基本的变音符号。

test.html

<!doctype html>
<link type="text/css" rel="stylesheet" href="style.css"/>
<meta charset="UTF-8">
<h3>Umlauts: ä ü ö</h3>

Result.html

<!doctype html>
<link type="text/css" rel="stylesheet" href="style.css"/>
<meta charset="UTF-8">
<h3>Umlauts: ä ü ö</h3>

我的代码

from jinja2 import Template

file = open("test.html")
data = file.read()
Template(data).stream().dump("index.html")

现在我不明白如何让 jinja 正确处理变音符号。我怎样才能做到这一点?我正在使用流,因为在我的实际用例中,我提供了一些数据来填充,然后将其转储到要显示的 html。

编辑:我想要的有可能吗?据我了解 here 不是吗?

It is not possible to use Jinja2 to process non-Unicode data. The reason for this is that Jinja2 uses Unicode already on the language level. For example Jinja2 treats the non-breaking space as valid whitespace inside expressions which requires knowledge of the encoding or operating on an Unicode string.

使用 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')