Qué es la codificación de URL:
Se debe codificar una URL cuando hay caracteres especiales ubicados dentro de la URL. Por ejemplo:
console.log(encodeURIComponent('?notEncoded=&+'));
En este ejemplo, podemos observar que todos los caracteres, excepto la cadena, notEncoded
están codificados con signos%. La codificación URL también se conoce como codificación porcentual porque escapa a todos los caracteres especiales con un%. Luego, después de este signo%, cada carácter especial tiene un código único
¿Por qué necesitamos la codificación de URL?
Ciertos caracteres tienen un valor especial en una cadena URL. Por ejemplo, el? El carácter indica el comienzo de una cadena de consulta. Para localizar con éxito un recurso en la web, es necesario distinguir cuándo un carácter se entiende como parte de una cadena o parte de la estructura de la URL.
¿Cómo podemos lograr la codificación de URL en JS:
JS ofrece un montón de funciones de utilidad incorporadas que podemos usar para codificar fácilmente las URL. Estas son dos opciones convenientes:
encodeURIComponent()
: Toma un componente de un URI como argumento y devuelve la cadena de URI codificada.
encodeURI()
: Toma un URI como argumento y devuelve la cadena de URI codificada.
Ejemplo y advertencias:
Tenga en cuenta que no debe pasar toda la URL (incluido el esquema, por ejemplo, https: //) a encodeURIComponent()
. En realidad, esto puede transformarlo en una URL no funcional. Por ejemplo:
// for a whole URI don't use encodeURIComponent it will transform
// the / characters and the URL won't fucntion properly
console.log(encodeURIComponent("http://www.random.com/specials&char.html"));
// instead use encodeURI for whole URL's
console.log(encodeURI("http://www.random.com/specials&char.html"));
Podemos observar si ponemos la URL completa en encodeURIComponent
que las barras diagonales (/) también se convierten en caracteres especiales. Esto hará que la URL ya no funcione correctamente.
Por lo tanto (como su nombre lo indica) use:
encodeURIComponent
en una determinada parte de una URL que desea codificar.
encodeURI
en una URL completa que desea codificar.