Función encodeURI de JavaScript

F

Durante gran parte de la vida de JavaScript, fue un lenguaje de programación solo para navegador y no se podía ejecutar en el lado del servidor como ahora. Debido a esto, JS tiene muchas funciones integradas que son específicas de las funciones del lado del navegador, como codificar cadenas para usar en URL. Algunas de las funciones más utilizadas son:

  • encodeURI
  • encodeURIComponent
  • decodeURI
  • decodeURIComponent
  • escape
  • unescape

La función que es el tema central de este artículo, encodeURI, se utiliza para codificar un Identificador uniforme de recursos (URI) para que los caracteres que no deben usarse en un URI (como un espacio) tengan el formato correcto. Estos personajes se escapan usando codificación porcentual, o codificación de URL, para representar los caracteres URI no estándar.

La codificación porcentual es simplemente una representación hexadecimal del carácter ASCII prefijado con el carácter de porcentaje (%). Entonces, por ejemplo, la representación de codificación porcentual del signo de exclamación (!) Es %21 ya que 21 es el número hexadecimal ASCII para el signo de exclamación.

En términos de casos de uso, digamos que su sitio web tiene una barra de búsqueda y las consultas ingresadas allí se utilizan para construir una URL como esta:

https://mysite.com/q=[SEARCH_QUERY]

En un caso de uso como este, es bastante probable que el usuario ingrese una cadena que contenga un espacio (u otro carácter reservado), que no está permitido en las URL. Entonces, ¿qué hacemos si el usuario ingresa la cadena “desarrollo web”, por ejemplo? No podemos permitir cualquier carácter en nuestra URL. Ahí es donde encodeURI viene en:

> let query = 'web development';
> let searchUrl="https://mysite.com/q=" + query;
> encodeURI(searchUrl)
'https://mysite.com/q=web%20development'

Observe cómo el espacio ha sido reemplazado por la codificación porcentual, %20. los encodeURI La función es perfecta para esto porque no escapa a ningún otro carácter reservado, como los dos puntos o la barra diagonal. Esto se debe a que espera recibir una URL completa como entrada, a diferencia de la encodeURIComponent variación de esta función. La URL pasada a encodeURI puede contener cualquier parte válida de un esquema de URL y no se puede escapar, mientras que otros caracteres reservados o no permitidos están codificados:

> encodeURI('https://scott:[email protected]:443/my/file.html?stack=abuse#javascript')
'https://scott:[email protected]:443/my/file.html?stack=abuse#javascript'
> encodeURI('https://scott:[email protected]:443/my/file.html?stack="abuse"#javascript')
'https://scott:[email protected]:443/my/file.html?stack=%22abuse%22#javascript'

Observe que no se realizaron cambios en la URL en la primera llamada anterior. Esto se debe a que todos los caracteres son válidos en una URL. En la segunda convocatoria tenemos algunas comillas, que no son válidas y, por tanto, están codificadas.

Los siguientes caracteres no están codificados por encodeURI, independientemente de dónde se encuentren en la URL: A-Za-z0-9;,/?:@&=+$-_.!~*'()#

Esta función puede incluso manejar la codificación de caracteres no ASCII usando una codificación basada en UTF-8 más larga. Por ejemplo, el símbolo de moneda del euro (€) se codifica utilizando tres conjuntos de codificación porcentual:

> encodeURI('€')
'%E2%82%AC'

Esto permite que los caracteres de cualquier idioma, o caracteres de formato especial, se pasen a través de URL.

Conclusión

JavaScript incorporado encodeURI La función es útil para formatear correctamente las URL, o más genéricamente, URI con caracteres ASCII no reservados o incluso caracteres UTF-8. Se debe utilizar cada vez que se utilice la entrada del usuario al construir una URL para asegurarse de que tenga el formato adecuado.

En el otro lado de las cosas, también tenemos la decodeURI función incorporada, que se encarga de decodificar los valores codificados en porcentaje, que veremos en otro artículo.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad