+
signo tiene un significado semántico en la cadena de consulta. Se usa para representar un espacio. Otro carácter que tiene importancia semántica en la cadena de consulta es &
que se utiliza para separar los diversos pares var=value
en la cadena de consulta.
La mayoría de los scripts del lado del servidor decodifican los parámetros de consulta antes de usarlos, de modo que un +
se convierte correctamente a un espacio. Ahora, si quiere que un literal +
esté presente en la cadena de consulta, necesita especificar %2B
en su lugar.
+
firmar en la cadena de consulta es URL decodificado en un espacio. %2B
en la cadena de consulta está decodificado con URL a un signo +.
ver la diferencia entre
http://www.google.com/search?q=foo+bar
y
http://www.google.com/search?q=foo%2Bbar
En los ejemplos anteriores, script del servidor de Google es el URL-decodificación de los parámetros de consulta y luego usarlos para hacer la búsqueda .
La codificación URL no es más que el signo %
seguido del código hexadecimal del carácter especial. Por ejemplo, sabemos que el código hexadecimal de A
es 0x41 (decimal: 65). Prueba esto:
http://www.google.com/search?q=%41
Espero que esto tenga codificación URL clara.
Por lo tanto, si desea que el signo +
a ser preservada cuando un JavaScript es ir a buscar una dirección URL con +
señales en sus parámetros de consulta y una secuencia de comandos del lado del servidor procesaría los parámetros de consulta después de URL-decodificación, debe cifrar la URL de los parámetros de consulta en la URL antes de usar la emisión de la solicitud HTTP get para que todos los signos +
se conviertan a %2B
cuando la solicitud llegue al script del lado del servidor.Ahora, cuando el script del lado del servidor URL-descodifica la cadena de consulta, todos los %2B
se convierten de nuevo a los signos +
que es lo que desea.
Consulte Encode URL in JavaScript? para obtener información sobre cómo codificar mediante URL los parámetros mediante JavaScript. Respuesta corta de la discusión que hay:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
¿tiene el código? – tutts
en realidad el valor depende de la entrada del usuario. – domlao
FYI ten cuidado con el 'UrlBuilder', parece un poco inútil, así es como me tropecé con tu pregunta. Ver http://stackoverflow.com/questions/24576239/why-doesnt-uribuilder-query-escaping-url-encoding-the-query-string – KCD