dkg*_*irl 21 python django unicode utf-8
我的Django视图/模板无法处理特殊字符.由于ñ,下面的简单视图失败了.我得到以下错误:
文件中的非ASCII字符'\ xf1'
def test(request):
return HttpResponse('español')
Run Code Online (Sandbox Code Playgroud)
我需要设置一些常规设置吗?如果我必须分别处理所有字符串会很奇怪:非美国字母很常见!
编辑 这是对以下评论的回应.它仍然失败:(
我按照Gabi的建议将编码注释添加到我的视图中,并将元信息添加到我的html中.
现在我上面的例子没有给出错误,但是ñ显示不正确.
我试过了return render_to_response('tube/mysite.html', {"s": 'español'}).没有错误,但是没有错误(如果s = hello则会发生).html页面上的其他信息显示正常.
我尝试将'español'硬编码到我的HTML中,但失败了:
UnicodeDecodeError'utf8'编解码器无法解码字节0xf.
我在字符串前面尝试了你:
SyntaxError(unicode error)'utf8'编解码器无法解码字节0xf1
这有帮助吗?
Gab*_*aru 37
你在脚本的开头是否有这个:
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
...?
见:http://www.python.org/dev/peps/pep-0263/
编辑:对于第二个问题,它是关于HTML编码.把它放在你的html页面的头部(你应该把请求作为html页面发送,否则我认为你不能正确输出该字符):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
小智 16
插入views.py的顶部
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
并在字符串前添加"u"
my_str = u"plus de détails"
Run Code Online (Sandbox Code Playgroud)
解决了!
您需要Gabi提到的编码注释,并在字符串前使用unicode"u"符号:
return HttpResponse(u'español')
Run Code Online (Sandbox Code Playgroud)
我在网上找到的解释所有ASCII/Unicode混乱的最佳页面是:http: //www.stereoplex.com/blog/python-unicode-and-unicodedecodeerror
请享用!