首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模板标记值中的Django非ASCII字符

模板标记值中的Django非ASCII字符
EN

Stack Overflow用户
提问于 2015-05-29 13:47:50
回答 1查看 923关注 0票数 1

我正在为一个法国应用程序编写一个自定义Django模板标记。我的模板标签接受一个参数,它是一个字符串:

代码语言:javascript
运行
复制
{% mytag "Hello" %}

是完美的,但当尝试将一些非ASCII字符放入值时会失败。

你怎么能让这东西工作:

代码语言:javascript
运行
复制
{% mytag "Êtes-vous à Paris ?" %}

我发现了一个错误:

‘'ascii’编解码器不能在0位置编码字符u‘\xca:序数不在范围内(128) Unicode错误提示 无法编码/解码的字符串是:

非常感谢提前!

编辑: Python是2.7。下面是标记的代码:

代码语言:javascript
运行
复制
@register.simple_tag(takes_context=True)
def mytag(context, my_var):
    return "Here it is: {my_var}".format(my_var=my_var)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-29 14:31:29

试着替换

代码语言:javascript
运行
复制
return "Here it is: {my_var}".format(my_var=my_var)

通过

代码语言:javascript
运行
复制
return u"Here it is: {my_var}".format(my_var=my_var)

在Python2.7中,"Here it is: {my_var}"是一个str对象,一个编码的字符串,my_var是一个unicode对象,一个解码的字符串,当格式化时,Python会尝试对my_var进行编码,以便它与格式化字符串的类型相匹配。默认情况下,它使用不支持特殊字符的ascii编解码器来执行此操作。

在格式化字符串之前添加u使其成为unicode字符串,在格式化期间不会进行编码。

由于您可能会说法语,所以我建议您阅读这篇文章,这是使用Python进行编码的一个很好的指南。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30531308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档