Codificación de URLs Explicada (Percent-Encoding y Cuándo Aplica)
Las URLs son sorprendentemente exigentes con los caracteres que aceptan. Los espacios, acentos y símbolos pueden romper un enlace o corromper un parámetro a menos que se codifiquen. Esta guía explica el percent-encoding, la diferencia entre `%20` y `+`, y cómo arreglar una URL rota.
¿Por qué una URL debe codificarse?
Una URL está hecha de caracteres reservados (/, ?, &, =, # y otros) que llevan estructura. Si tus datos contienen alguno, debes codificarlo para que el navegador no lo lea mal. Los caracteres no ASCII como ? y é también deben codificarse en secuencias de porcentaje.
¿Cómo funciona el percent-encoding?
Cada byte inseguro se vuelve un % seguido de dos dígitos hexadecimales. La letra ? se vuelve %3F, é se vuelve %C3%A9, y muchos espacios aparecen como %20. Como esas cadenas hexadecimales nunca chocan con los caracteres reservados, la URL permanece sin ambigüedad.
¿Por qué algunas URLs usan %20 y otras usan +?
En la parte de la ruta de una URL, los espacios normalmente se codifican como %20. En cuerpos application/x-www-form-urlencoded y en algunas cadenas de consulta, se usa un + para el espacio. La elección depende del contexto, por eso una URL de aspecto correcto puede renderizar distinto.
¿Cuáles son las roturas comunes y cómo detectarlas?
Un enlace con un & en bruto en un valor divide el parámetro en silencio. Un # en un valor trunca el resto de la URL. Un valor con espacios puede cortarse. Si tus datos contienen alguno de estos, codifícalos antes de construir el enlace.
¿Cómo codificar y decodificar una URL con seguridad?
Codifica la parte correcta de la URL con la función correcta y verifica el resultado. El codificador de URLs te permite alternar entre estilos %20 y +, detecta lo ya codificado y maneja consultas completas o componentes individuales.