Esta es el arreglo más correcta que te podemos brindar, pero mírala detenidamente y valora si se adapta a tu trabajo.
Solución:
Depende de lo que realmente quieras hacer.
encodeURI asume que la entrada es un URI completo que puede tener algunos caracteres que necesitan codificación.
encodeURIComponent codificará todo con un significado especial, por lo que lo usa para componentes de URI como
var world = "A string with symbols & characters that have special meaning?";
var uri = 'http://example.com/foo?hello=' + encodeURIComponent(world);
Si está codificando un string para poner un componente de URL (un parámetro de cadena de consulta), debe llamar encodeURIComponent
.
Si está codificando una URL existente, llame encodeURI
.
xkr.us tiene una gran discusión, con ejemplos. Para citar su resumen:
El método escape() no codifica el carácter + que se interpreta como un espacio en el lado del servidor y también lo generan los formularios con espacios en sus campos. Debido a esta deficiencia y al hecho de que esta función no maneja correctamente los caracteres que no son ASCII, debe evitar el uso de escape() siempre que sea posible. La mejor alternativa suele ser encodeURIComponent().
escape() no codificará: @*/+
El uso del método encodeURI() es un poco más especializado que escape(), ya que codifica URI en lugar de la cadena de consulta, que es parte de una URL. Utilice este método cuando necesite codificar un string para ser usado para cualquier recurso que use URI y necesite que ciertos caracteres permanezcan sin codificar. Tenga en cuenta que este método no codifica el carácter ‘, ya que es un carácter válido dentro de los URI.
encodeURI() no codificará: [email protected]#$&*()=:/,;?+’
Por último, el método encodeURIComponent() debe usarse en la mayoría de los casos al codificar un solo componente de un URI. Este método codificará ciertos caracteres que normalmente se reconocerían como caracteres especiales para URI, de modo que se puedan incluir muchos componentes. Tenga en cuenta que este método no codifica el carácter ‘, ya que es un carácter válido dentro de los URI.
encodeURIComponent() no codificará: ~!*()’