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

时间:2010-02-05 03:47:24

标签: python django unicode httpresponse

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

当我使用return HttpResponseRedirect(u'/page/?title=' + query_string) query_string包含你好等字符时,我收到错误

  

'ascii'编解码器无法编码位置21-26中的字符:序数不是   在范围(128)中,HTTP响应头必须是US-ASCII格式......

2 个答案:

答案 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))