Hack Jinja2编码来自`utf-8`而不是`ascii`?

时间:2015-02-21 06:14:01

标签: python unicode encoding utf-8 jinja2

Jinja2在处理之前将所有模板变量转换为unicode。任何人都可以找到这样的地方吗?

问题在于它假设字符串是ascii,但我们(在Roundup)内部使用utf-8而我们的ORM(HyperDB)会自动将对象属性恢复为utf-8,并且

,在传递给模板之前,在每个视图中将它们全部转换为unicode

1 个答案:

答案 0 :(得分:1)

Armin回答:

  

不幸的是,这是不可能的。 Jinja使用Python提供的2.x上的默认字符串强制来提高速度。没有保证要求制作unicode的电话。你唯一的糟糕选择是重新加载sys并调用sys.setdefaultencoding('utf-8')或其他东西。

更新:Jinja2 2.8包含一些与隐式字符串转换相关的更新。这让我觉得通过覆盖unicode类型的sys.setdefaultencoding('utf-8')方法可以不使用__add__,并确保在连接字符串时首先使用它。

https://github.com/mitsuhiko/jinja2/issues/511