Python 带有Unicode字符的单词不';不会出现在HTML输出中
我在Python2.7中使用Django 1.7.1,当我尝试将带有尖锐重音(á、é等)的西班牙语字符或元音传递到模板时,整个字符串不会出现在浏览器中(或HTML中)。我已经尝试了立即的解决办法,即Python 带有Unicode字符的单词不';不会出现在HTML输出中,python,django,utf-8,Python,Django,Utf 8,我在Python2.7中使用Django 1.7.1,当我尝试将带有尖锐重音(á、é等)的西班牙语字符或元音传递到模板时,整个字符串不会出现在浏览器中(或HTML中)。我已经尝试了立即的解决办法,即 # -*- coding: utf-8 -*- 在myviews.py中,并将 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我的模板index.html是 <!DOCTYPE HTM
# -*- coding: utf-8 -*-
在myviews.py
中,并将
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我的模板index.html
是
<!DOCTYPE HTML>
<html>
<head>
<title>Webpage</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1> {{ country }}</h1>
</body>
</html>
网页
{{国家}
浏览器显示一个空的
标记
已解决
我更改了#-*-编码:utf-8-*-
,改为#-*-编码:iso-8859-15-*-
,并将“国家”:u'Perú
改为“国家”:“Perú”
标签
在模板中没有必要您的问题是
render_to_response
的第二个参数是作为上下文传递的字典,但您直接在上下文中传递
你可以用两种方法解决这个问题
渲染
,如下所示:
def main_page(request):
return render(request, 'index.html', {'country': u'Perú'})
render\u to\u response
,则需要限定第二个参数:
return render_to_response('index.html',
context_instance=RequestContext(request,
{'country': u'Perú'}))
Django通常非常擅长处理Unicode。我自己并没有时间深入研究这个问题,但有一件事要补充到您的问题中——您到底是如何将非ascii字符传递到模板的?如果为Django模板提供Python Unicode字符串,那么它们应该可以正常工作。我想我还记得它也接受utf-8 bytestrings并检测差异,但我不太确定。你可以添加自己的解决方案作为答案并接受它,以便于将来遇到相同问题的访问者查找。您好,感谢您的回答,不幸的是,我在这两种情况下都遇到了错误(unicode错误)“utf8”编解码器无法解码位置0中的字节0xfa:无效的起始字节(views.py,第15行)您正在使用哪个文本编辑器?您确定views.py文件实际上存储为utf-8吗?
return render_to_response('index.html',
context_instance=RequestContext(request,
{'country': u'Perú'}))