escapar()
¡No lo uses!
escape()
se define en la sección B.2.1.2 escape y el texto de introducción del Anexo B dice:
... Todas las características y comportamientos del lenguaje especificados en este anexo tienen una o más características indeseables y, en ausencia de uso heredado, se eliminarían de esta especificación. ...
... Los programadores no deben usar o asumir la existencia de estas características y comportamientos al escribir nuevo código ECMAScript ...
Comportamiento:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
Los caracteres especiales se codifican con la excepción de: @ * _ + -. /
La forma hexadecimal para los caracteres, cuyo valor de unidad de código es 0xFF o menos, es una secuencia de escape de dos dígitos: %xx
.
Para los caracteres con una unidad de código mayor, %uxxxx
se utiliza el formato de cuatro dígitos . Esto no está permitido dentro de una cadena de consulta (como se define en RFC3986 ):
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Un signo de porcentaje solo se permite si está seguido directamente por dos dígitos hexadecimales, porcentaje seguido por u
no está permitido.
encodeURI ()
Use encodeURI cuando desee una URL que funcione. Haz esta llamada:
encodeURI("http://www.example.org/a file with spaces.html")
Llegar:
http://www.example.org/a%20file%20with%20spaces.html
No llame a encodeURIComponent ya que destruiría la URL y devolvería
http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html
encodeURIComponent ()
Use encodeURIComponent cuando desee codificar el valor de un parámetro de URL.
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
Luego puede crear la URL que necesita:
var url = "http://example.net/?param1=" + p1 + "¶m2=99";
Y obtendrá esta URL completa:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
Tenga en cuenta que encodeURIComponent no escapa al '
personaje. Un error común es usarlo para crear atributos html como href='MyUrl'
, que podría sufrir un error de inyección. Si está construyendo html a partir de cadenas, use en "
lugar de '
comillas de atributos o agregue una capa adicional de codificación ('
puede codificarse como% 27).
Para obtener más información sobre este tipo de codificación, puede consultar: http://en.wikipedia.org/wiki/Percent-encoding
encodeURIComponent("var1=value1&var2=value2")
es el caso de uso típico. ¡Ese ejemplo codificará el y , que probablemente no sea lo que se pretendía! normalmente se aplica por separado solo al valor en cada par de valores clave (la parte después de cada uno ).=
&
encodeURIComponent
=