如何在DJANGO中重定向到包含非ASCII字符的查询字符串URL?
如何在DJANGO中重定向到包含非ASCII字符的查询字符串URL?
当我使用 return HttpResponseRedirect(u'/page/?title=' + query_string)
,而这个 query_string
包含像 你好
这样的字符时,我会遇到一个错误。
'ascii' 编码无法编码位置21-26的字符:序号不在范围128内,HTTP响应头必须是US-ASCII格式...
2 个回答
6
Django的做法:
from django.http import HttpResponseRedirect
from django.utils.http import urlquote
return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))
6
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))
首先要尝试的就是这个(因为UTF8是唯一一种流行的编码方式,可以处理所有的Unicode字符)。这样做肯定能解决你遇到的异常问题——接下来要确保处理/page
的程序能够正确处理UTF-8编码的请求(大概是通过将它们解码回Unicode)。不过,这部分内容严格来说和你问的这个具体问题没有直接关系!