如何在DJANGO中重定向到包含非ASCII字符的查询字符串URL?

6 投票
2 回答
3984 浏览
提问于 2025-04-15 18:55

如何在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)。不过,这部分内容严格来说和你问的这个具体问题没有直接关系!

撰写回答