2009-11-15 15 views

Respuesta

33

encodeURIComponent() debería funcionar. Por ejemplo,

'&url=' + encodeURIComponent("http://a.com/?q=query&n=10") 

produce

"&url=http%3A%2F%2Fa.com%2F%3Fq%3Dquery%26n%3D10" 

(que no tiene ninguna '&' o '?' En el valor). Cuando el servidor recibe este URL, debe ser capaz de decodificar eso para conseguir el original:

param["url"] = "http://a.com/?q=query&n=10" 

No estoy seguro de qué servidor está utilizando (por ejemplo, Rails, Django, ...) pero eso debería funcionar "de fábrica" ​​en cualquier sistema normal.

-1

Utilice escape() para codificarlo en la URL, codificará los signos y símbolos para que eso no suceda.

+3

'escape' es similar a' encodeURIComponent', pero genera el resultado incorrecto para el carácter '+' y cualquier carácter que no sea ASCII. Nunca debería ser usado. – bobince

3

Usando '& url =' + encodeURIComponent (url); pasar una URL del navegador al servidor codificará la url

Sí, eso es lo que debe hacer. encodeURIComponent es la forma correcta de codificar un valor de texto para ponerlo en parte de una cadena de consulta.

pero cuando se decodifica en el servidor, los parámetros de url se interpretan como parámetros separados y no como parte del parámetro url único.

A continuación, el servidor está muy roto de hecho. Si eso es realmente lo que sucede, debe solucionarlo en el extremo del servidor.

¿Código?

-2

Honestamente, vaya con Google URL Shortener. A continuación, sólo puede utilizar el código URL en la cadena de consulta URL: http://example.com/url/A7dh3

En su aplicación, y tener que anteponer el nombre de dominio de Google acortador de URL, y hacer la redirección. Esto agrega seguimiento a la URL a través de Google Analytics también. Muchas ventajas en este enfoque. Solo un código corto y datos de seguimiento agregados también.

0

No lo intenté, pero la codificación/decodificación BASE64 también debería funcionar.

Cuestiones relacionadas