Funci贸n encodeURI de JavaScript

    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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *