Как перенаправить URL-адрес строки запроса, содержащий не-ascii символы в DJANGO? - PullRequest
6 голосов
/ 05 февраля 2010

Как перенаправить на строку запроса URL-адрес, содержащий символы не ascii в DJANGO?

Когда я использую return HttpResponseRedirect(u'/page/?title=' + query_string), где query_string содержит символы, такие как 你好, я получаю ошибку

Кодек 'ascii' не может кодировать символы в позиции 21-26: порядковый номер не в диапазоне (128) заголовки ответа HTTP должны быть в формате US-ASCII ...

Ответы [ 2 ]

6 голосов
/ 05 февраля 2010

путь Джанго:

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

return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))
6 голосов
/ 05 февраля 2010
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))

- первое, что нужно попробовать (поскольку UTF8 - единственная популярная кодировка, которая может обрабатывать все символы Юникода). Это определенно должно избавить от наблюдаемого исключения - проблема переходит к тому, чтобы обработчик для /page мог правильно обрабатывать запросы в кодировке UTF-8 (предположительно, декодируя их обратно в Unicode). Однако эта часть, строго говоря, не относится к конкретному вопросу, который вы задаете!

...