2010-02-04 3 views
7

Sto usando jsps e nel mio url ho un valore per una variabile come "L & T". Ora quando provo a recuperarne il valore usando request.getParameter ottengo solo "L". Riconosce "&" come separatore e quindi non viene considerato come un'intera stringa.Escaping & in a URL

Come posso risolvere questo problema?

+0

dare un po 'di codice - come stai mettendo il "L & T" nella barra degli indirizzi? – Bozho

risposta

14
java.net.URLEncoder.encode("L & T", "utf8") 

Emette la codifica URL, che va bene come parametro GET:

L+%26+T 
+0

quello con un secondo argomento per la codifica dei caratteri? – Bozho

+0

OK, il mio commento è fuori posto, lo cancellerò – Rodrigo

1

quel carattere in un URL deve essere codificato come: %26

// Your URL 
http://www.example.com?a=l&t 

// Encoded 
http://www.example.com?a=l%26t 
1

È necessario a "URL codifica" i parametri per evitare questo problema. Il formato della stringa di query URL è: ...?<name>=<value>&<name>=<value>&<etc> Tutti gli <name> s e s devono essere codificati tramite URL, che in pratica significa trasformare tutti i caratteri che potrebbero essere interpretati in modo errato (come lo &) in valori% -escaped. Vedi questa pagina per ulteriori informazioni: http://www.w3schools.com/TAGS/ref_urlencode.asp

Se stai generando l'URL problema con Java, si utilizza questo metodo: String str = URLEncoder.encode(input, "UTF-8");

Generare l'URL altrove (alcuni modelli o JS o markup crudo) , è necessario risolvere il problema all'origine.

0

È possibile utilizzare UriUtils#encode(String source, String encoding) da Spring Web. Questa classe di utilità fornisce anche i mezzi per codificare solo alcune parti dell'URL, ad esempio UriUtils#encodePath.