Comment rediriger vers une URL de chaîne de requête contenant des caractères non-ascii dans DJANGO?

StackOverflow https://stackoverflow.com/questions/2204914

Question

Comment rediriger vers une URL de chaîne de requête contenant des caractères non-ascii dans DJANGO?

Quand j'utilise return HttpResponseRedirect(u'/page/?title=' + query_string) où le query_string contient des caractères comme 你好, je reçois une erreur

  

codec 'ascii' ne peut pas encoder des caractères en position 21-26: ordinal   dans la plage (128), les en-têtes de réponse HTTP doivent être au format US-ASCII ...

Était-ce utile?

La solution

HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))

est la première chose à essayer (puisque UTF8 est le seul encodage populaire qui peut gérer tous les caractères Unicode). Cela devrait certainement se débarrasser de l'exception vous observez - la question se déplace alors à assurer le gestionnaire de /page peut traiter correctement UTF-8 requêtes codées (probablement par les décoder de nouveau dans Unicode). Toutefois, cette partie n'est pas, à proprement parler, germane à cette question spécifique que vous demandez!

Autres conseils

façon django:

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

return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top