模板标签值中的 Django 非 ASCII 字符
Django non-ASCII chars in template tags values
我正在为一个法语应用程序编写一个自定义 Django 模板标签。我的模板标签接受一个字符串参数:
{% mytag "Hello" %}
工作完美,但在尝试将一些非 ASCII 字符放入值时失败。
你如何让这个东西工作:
{% mytag "Êtes-vous à Paris ?" %}
我收到这个错误:
'ascii' codec can't encode character u'\xca' in position 0: ordinal
not in range(128)
Unicode error hint
The string that could not be encoded/decoded was: Êtes-v
非常感谢!
编辑:
Python 版本为 2.7。这是标签的代码:
@register.simple_tag(takes_context=True)
def mytag(context, my_var):
return "Here it is: {my_var}".format(my_var=my_var)
尝试替换
return "Here it is: {my_var}".format(my_var=my_var)
来自
return u"Here it is: {my_var}".format(my_var=my_var)
在Python 2.7中,"Here it is: {my_var}"
是一个str
对象,一个编码字符串,my_var
是一个unicode
对象,一个解码字符串,当格式化,Python 将尝试对 my_var
进行编码,使其与格式化字符串的类型相匹配。默认情况下,它使用不支持特殊字符的 ascii
编解码器。
在格式化字符串之前添加u
使其成为unicode
字符串,格式化期间不会发生编码。
由于您看起来可能会说法语,因此我建议您阅读 this article,这是在 Python.
中编码的重要指南
我正在为一个法语应用程序编写一个自定义 Django 模板标签。我的模板标签接受一个字符串参数:
{% mytag "Hello" %}
工作完美,但在尝试将一些非 ASCII 字符放入值时失败。
你如何让这个东西工作:
{% mytag "Êtes-vous à Paris ?" %}
我收到这个错误:
'ascii' codec can't encode character u'\xca' in position 0: ordinal not in range(128)
Unicode error hint
The string that could not be encoded/decoded was: Êtes-v
非常感谢!
编辑: Python 版本为 2.7。这是标签的代码:
@register.simple_tag(takes_context=True)
def mytag(context, my_var):
return "Here it is: {my_var}".format(my_var=my_var)
尝试替换
return "Here it is: {my_var}".format(my_var=my_var)
来自
return u"Here it is: {my_var}".format(my_var=my_var)
在Python 2.7中,"Here it is: {my_var}"
是一个str
对象,一个编码字符串,my_var
是一个unicode
对象,一个解码字符串,当格式化,Python 将尝试对 my_var
进行编码,使其与格式化字符串的类型相匹配。默认情况下,它使用不支持特殊字符的 ascii
编解码器。
在格式化字符串之前添加u
使其成为unicode
字符串,格式化期间不会发生编码。
由于您看起来可能会说法语,因此我建议您阅读 this article,这是在 Python.
中编码的重要指南