¿Qué es la codificación de URL?
Las URLs solo pueden contener un conjunto limitado de caracteres ASCII. Cualquier otra cosa — espacios, &, =, ?, letras no ASCII — debe ir percent-encoded. Cada byte no permitido se reemplaza por % seguido de su valor hexadecimal de dos dígitos. Por ejemplo, un espacio se convierte en %20 y é en %C3%A9 (su secuencia UTF-8).
encodeURIComponent frente a encodeURI
JavaScript expone dos funciones integradas con reglas de escape distintas:
- encodeURIComponent codifica casi todo — seguro para insertar un valor dentro de una query string o segmento de ruta.
- encodeURI conserva caracteres válidos en una URL completa (
:/?#[]@!amp;'()*+,;=), así que sirve para codificar una URL entera sin romper su estructura.
Regla práctica: usa encodeURIComponent al insertar un valor del usuario en una URL, y encodeURI al sanear una URL ya construida.
Ejemplos comunes
- hello world
- hello%20world
- a+b=c
- a%2Bb%3Dc
- café
- caf%C3%A9
- https://x.com/?q=a b
- https%3A%2F%2Fx.com%2F%3Fq%3Da%20b