Función encodeURI() ‎en JavaScript

Función encodeURI()‎‎‎ en JavaScript
Función encodeURI()‎‎‎ en JavaScript

La función encodeURI() en javascript ‎codifica URI cambiando cada copia de un carácter dado en una o más secuencias de escape que representan la codificación UTF-8 del carácter en cuestión.

Características generales

La función encodeURI no codifica caracteres que tienen un significado especial (caracteres reservados) en los enlaces URI. El siguiente ejemplo muestra lo que puede contener un URI. Tenga en cuenta que algunos de los caracteres en él se utilizan para dar un significado especial.

http : //username:password@www.example.com:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor

Por lo tanto, la función no codificará los encodeURI caracteres necesarios para crear un URI completo. Tenga en cuenta que la función encodeURI no codificará algunos caracteres conocidos como «marcas no reservadas», que no tienen intención reservada pero están permitidos en los URI «tal cual» (consulte RFC2496 ). La función encodeURI escapa a todos los caracteres excepto:

A - Z  a - z  0 - 9  ;  ,  /? : @ & = + $ - _. ! ~ * '() #

La función encodeURI difiere de la función encodeURIComponent que se muestra en el siguiente ejemplo. Tenga en cuenta que la principal diferencia entre ellas está en la codificación de los caracteres reservados:

var  set1  =  ";, /?: @ & = + $ #" ;   // caracteres reservados 
var  set2  =  "-_.! ~ * '()" ;     // etiquetas no reservadas 
var  set3  =  "ABC abc 123" ;   // letras, números y espacios

console.log(encodeURI(set1)); // ;,/?:@&=+$#
console.log(encodeURI(set2)); // -_.!~*'()
console.log(encodeURI(set3)); // ABC%20abc%20123 (observe cómo se simboliza el espacio)

console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24%23
console.log(encodeURIComponent(set2)); // -_.!~*'()
console.log(encodeURIComponent(set3)); // ABC%20abc%20123 (observe cómo se simboliza el espacio)

Tenga en cuenta que la función encodeURI no puede configurar las solicitudes GET y POST para usarlas con solicitudes XMLHTTPRequest, porque &+= no se codificarán, y estos caracteres tienen un significado especial en las solicitudes GET y POST. Pero la función se puede utilizar encodeURIComponent para este propósito, ya que codifica estos caracteres. 

Tenga en cuenta que si desea seguir el nuevo RFC3986 para URL, que hace que los corchetes están reservados (para direcciones IPv6) y, por lo tanto, no se codificarán en una URL, use la siguiente función simple:

function fixedEncodeURI(str) {
  return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}

Estructura encodeURI() javascript

encodeURI(URI)

encodedURI

URI completo.

Valor a devolver

Cadena que representa la versión codificada del URI.

Soporte de navegadores

CaracterísticaChromeFirefoxIEÓperaSafari
Soporte básico