encodeURI o encodeURIComponent: cuál usar
Las dos funciones escapan caracteres, pero reservan cosas distintas. encodeURI conserva los signos que estructuran una dirección («/», «?», «&», «=»), así que sirve para una URL completa. encodeURIComponent lo escapa todo, porque un valor de parámetro no debe contener esos signos: es el adecuado para lo que va después de «q=» o dentro de un segmento de ruta.
- URL completa: encodeURI deja «https://ejemplo.com/ruta?q=» intacto y escapa los espacios y acentos.
- Valor de parámetro: encodeURIComponent convierte «hola mundo» en «hola%20mundo» y un «&» literal en «%26».
- Decodificar: invierte cualquiera de las dos formas con decodificación por porcentaje.
Ejemplo
Partiendo de «búsqueda de café», encodeURIComponent produce «b%C3%BAsqueda%20de%20caf%C3%A9»: cada byte UTF-8 se expresa como %XX. Al decodificar esa cadena recuperas el texto exacto.
Errores comunes
- Un «%» suelto: al decodificar, cada «%» debe ir seguido de dos dígitos hexadecimales. Si hay uno incompleto, la herramienta te lo dice en lugar de fallar en silencio.
- Codificar dos veces: si una URL ya codificada se vuelve a codificar, los «%» se convierten en «%25» y el resultado se alarga; decodifícala primero si dudas.
- Confundir «+» con espacio: en los formularios web clásicos el espacio también se escribe como «+», pero la codificación por porcentaje usa %20. Esta herramienta usa %20.