嗨,我在Google App Engine中使用jinja2渲染模板,但是当我通过阿拉伯文或波斯字符串az模板变量时,出现此错误
فروشگاه {{ name }}
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in position 0: ordinal not in range(128)
下面我尝试对其进行编码,以便它可以被jinja接受,但是字符串根本不会出现
def deccode(n):
n = n.decode("utf-8")
n = n.encode("ascii","ignore")
return n
name = 'رشد'
name = deccode(name)
logo = 'roshd'
logo = deccode(logo)
ss = {'name': name, 'logo': logo}
s = template.render(ss)
<div class=" title">
<i class="dropdown icon"></i>
فروشگاه
那么将阿拉伯语传递给jinja 2的最佳方法是什么?
确保将unicode字符串传递给模板。假设您使用的是Python 2,这意味着在字符串文字前添加前缀u
:
name = u'رشد'
此外,摆脱您的自定义解码功能。不需要 确保将文件另存为UTF-8,并在文件的第一行中添加注释,以指示文件的编码,如@manikandan的答案和PEP 263中所述
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句