python - jinja2 将阿拉伯语传递给 render_template

标签 python google-app-engine ascii jinja2 persian

嗨,我在谷歌应用程序引擎中使用 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 中所述。

关于python - jinja2 将阿拉伯语传递给 render_template,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36542678/

相关文章:

python - 错误的默认 python 命令

python - 使用 struct.pack 的字节顺序 struct.unpack

python - 使用 django-python3-ldap 查找安全组的用户

javascript - 连接到 Google App Engine 部署

python - 如何在 Python 中将后端推送队列中创建的 Channel API token 发送到前端?

c# - SQL Server HASHBYTES 和扩展 Ascii

python - 获取装饰函数的名称?

c - fprintf 打印退格时输出 0x08

java - 将字母 A-Z 设置为特定的 int 值而不是 ASCII 值 JAVA

android - 生成的云端点缺少 Endpoint.Builder