Por qué las URLs necesitan codificación
Una URL solo puede contener un conjunto limitado de caracteres ASCII. Los espacios, caracteres acentuados (é, ü, ñ), scripts no latinos (árabe, chino, japonés) y puntuación reservada están prohibidos en las URLs tal cual. La codificación porcentual convierte caracteres inseguros: cada carácter se reemplaza por `%` seguido de dos dígitos hexadecimales.
Sin codificación, una URL como `https://example.com/buscar?q=café con leche` se rompería. Correctamente codificada: `https://example.com/buscar?q=caf%C3%A9%20con%20leche`.
encodeURI vs encodeURIComponent
`encodeURI()` codifica una URL completa, preservando los caracteres con significado estructural en una URL. Úsalo cuando tienes una URL completa y solo quieres hacerla segura para transmisión.
`encodeURIComponent()` es más agresivo — codifica todo excepto letras, dígitos y algunos caracteres especiales. Úsalo para valores individuales de parámetros de consulta o segmentos de ruta.
Errores comunes de codificación
Doble codificación: codificar una cadena ya codificada produce `%2520` en lugar de `%20`. Siempre decodifica primero, luego vuelve a codificar si es necesario. Más vs espacio: en cadenas de consulta, `+` a veces representa un espacio. En rutas URL, los espacios siempre deben ser `%20`.