How to redirect to a query string URL containing non-ascii characters in DJANGO?
When I use return HttpResponseRedirect(u'/page/?title=' + query_string)
where the query_string
contains characters like 你好
, I get an error
'ascii' codec can't encode characters in position 21-26: ordinal not in rang开发者_C百科e(128), HTTP response headers must be in US-ASCII format ...
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))
is the first thing to try (since UTF8 is the only popular encoding that can handle all Unicode characters). That should definitely get rid of the exception you're observing -- the issue then moves to ensuring the handler for /page
can properly deal with UTF-8 encoded queries (presumably by decoding them back into Unicode). However, that part is not, strictly speaking, germane to this specific question you're asking!
django way:
from django.http import HttpResponseRedirect
from django.utils.http import urlquote
return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))
精彩评论