如何在DJANGO中重定向到包含非ascii字符的查询字符串URL?
当我使用return HttpResponseRedirect(u'/page/?title=' + query_string)
query_string
包含你好
等字符时,我收到错误
'ascii'编解码器无法编码位置21-26中的字符:序数不是 在范围(128)中,HTTP响应头必须是US-ASCII格式......
答案 0 :(得分:6)
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))
是第一个尝试(因为UTF8是唯一可以处理所有Unicode字符的流行编码)。这绝对应该摆脱你正在观察的异常 - 然后问题转移到确保/page
的处理程序可以正确处理UTF-8编码的查询(可能通过将它们解码回Unicode)。但是,严格来说,这部分与你提出的这个具体问题密切相关!
答案 1 :(得分:6)
django方式:
from django.http import HttpResponseRedirect
from django.utils.http import urlquote
return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))