¿Cuál es la diferencia entre decodeURIComponent y decodeURI?
¿ Cuál es la diferencia entre las funciones de JavaScript decodeURIComponent
y decodeURI
?
Para explicar la diferencia entre estos dos, déjame explicarte la diferencia entre encodeURI
y encodeURIComponent
.
La principal diferencia es que:
- La
encodeURI
función está pensada para su uso en el URI completo. - La
encodeURIComponent
función está pensada para usarse en... bueno... componentes URI, es decir, cualquier parte que se encuentre entre separadores (; /?: @ & = + $, #).
Entonces, encodeURIComponent
estos separadores también están codificados porque se consideran texto y no caracteres especiales.
Ahora, volvamos a la diferencia entre las funciones de decodificación, cada función decodifica cadenas generadas por su correspondiente contraparte de codificación cuidando la semántica de los caracteres especiales y su manejo.
encodeURIComponent/decodeURIComponent() es casi siempre el par que desea usar, para concatenar y dividir cadenas de texto en partes de URI.
encodeURI es un nombre menos común y engañoso: en realidad debería llamarse fixBrokenURI. Toma algo que es casi un URI, pero que contiene caracteres no válidos, como espacios, y lo convierte en un URI real. Tiene un uso válido para corregir URI no válidos a partir de la entrada del usuario, y también se puede usar para convertir un IRI (URI con caracteres Unicode simples) en un URI simple (usando UTF-8 con % de escape para codificar el código no ASCII). ).
Mientras que encodeURI en realidad debería llamarse fixBrokenURI(), decodeURI() también podría llamarse potencialmenteBreakMyPreviouslyWorkingURI(). No se me ocurre ningún uso válido para ello en ninguna parte; evitar.