Domanda

Come reindirizzare a un URL query string che contiene caratteri non-ASCII in DJANGO?

Quando uso return HttpResponseRedirect(u'/page/?title=' + query_string) dove il query_string contiene caratteri come 你好, ottengo un errore

  

codec 'ascii' non può codificare i caratteri in posizione 21-26: non ordinali   nella gamma (128), intestazioni di risposta HTTP devono essere in formato US-ASCII ...

È stato utile?

Soluzione

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

è la prima cosa da provare (dal momento che è l'unico UTF8 codifica popolare in grado di gestire tutti i caratteri Unicode). Che deve assolutamente sbarazzarsi di eccezione si sta osservando - la questione si sposta quindi a garantire il gestore per /page in grado di affrontare correttamente con UTF-8 queries codificati (presumibilmente decodificando nuovamente dentro Unicode). Tuttavia, quella parte non è, a rigor di termini, germano a questa specifica domanda che stai chiedendo!

Altri suggerimenti

modo django:

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

return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top