6

DJANGOで非ASCII文字を含むクエリ文字列URLにリダイレクトするにはどうすればよいですか?

のような文字が含まれているreturn HttpResponseRedirect(u'/page/?title=' + query_string)場所を使用すると、エラーが発生しますquery_string你好

'ascii'コーデックは位置21-26の文字をエンコードできません:序数はrange(128)にありません、HTTP応答ヘッダーはUS-ASCII形式である必要があります...

4

2 に答える 2

6

ジャンゴの方法:

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 に答える
6
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))

最初に試すのは (UTF8 がすべての Unicode 文字を処理できる唯一の一般的なエンコーディングであるため)。これにより、観察している例外が確実に取り除かれます。問題は、ハンドラーが/pageUTF-8 でエンコードされたクエリを適切に処理できるようにすることです (おそらくそれらを Unicode にデコードすることによって)。ただし、厳密に言えば、その部分は、あなたが求めているこの特定の質問とは関係ありません!

于 2010-02-05T04:29:15.903 に答える