6

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

当我使用return HttpResponseRedirect(u'/page/?title=' + query_string)where query_stringcontains characters like你好时,出现错误

“ascii”编解码器无法对位置 21-26 中的字符进行编码:序数不在范围内(128),HTTP 响应标头必须采用 US-ASCII 格式...

4

2 回答 2

6
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))

是首先要尝试的(因为 UTF8 是唯一可以处理所有 Unicode 字符的流行编码)。这肯定会消除您观察到的异常——然后问题转移到确保处理程序/page能够正确处理 UTF-8 编码查询(大概是通过将它们解码回 Unicode)。但是,严格来说,这部分与您提出的这个特定问题无关!

于 2010-02-05T04:29:15.903 回答
6

django方式:

from django.http import HttpResponseRedirect
from django.utils.http import urlquote

return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))
于 2010-02-05T15:09:06.053 回答