2010-02-04 33 views
7

Estoy usando jsps y en mi url tengo un valor para una variable como decir "L & T". Ahora cuando trato de recuperar el valor usando request.getParameter obtengo solo "L". Reconoce "&" como un separador y, por lo tanto, no se considera como una cadena completa.Escapar y en una URL

¿Cómo resuelvo este problema?

+0

dar un código - ¿cómo se pone el "L & T" en la barra de direcciones? – Bozho

Respuesta

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

estas salidas de la codificación URL, que está bien como un parámetro GET:

L+%26+T 
+0

el que tiene un segundo argumento para la codificación de caracteres? – Bozho

+0

OK, mi comentario está fuera de lugar, lo eliminaré – Rodrigo

1

Un signo literal en una dirección URL debe codificarse como: %26

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

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

Es necesario a "URL codificar" los parámetros para evitar este problema. El formato de la cadena de consulta de URL es: ...?<name>=<value>&<name>=<value>&<etc> Todos <name> sy <value> s necesitan ser URL codificados, lo que básicamente significa transformar todos los caracteres que podrían interpretarse erróneamente (como el &) en valores de% -escaped. Ver esta página para obtener más información: http://www.w3schools.com/TAGS/ref_urlencode.asp

Si está generando la URL problema con Java, utiliza este método: String str = URLEncoder.encode(input, "UTF-8");

Generación de la URL en otra parte (algunas plantillas o JS o por marcadores en bruto) , necesitas arreglar el problema en la fuente.

0

Puede usar UriUtils#encode(String source, String encoding) desde Spring Web. Esta clase de utilidad también proporciona medios para codificar solo algunas partes de la URL, como UriUtils#encodePath.