Lección 1
¿Qué es la codificación URL?
Caracteres reservados, seguridad ASCII y por qué las URLs necesitan codificación.
Las URLs están diseñadas como direcciones de texto compactas. Para que el análisis sintáctico sea predecible, las especificaciones definen caracteres reservados (como ?, #, /, &) que tienen significado estructural en una URI. Todo lo que pueda chocar con esa estructura — o que no pueda transmitirse de forma fiable como texto plano — debe representarse de otra manera. La codificación porcentual es la respuesta habitual: secuencias como %20 sustituyen a bytes en bruto dentro del flujo de caracteres de la URL.
La práctica moderna sigue RFC 3986 para la sintaxis genérica de URI y estándares relacionados para esquemas como https. El paso de codificación suele llamarse «codificación URL», pero técnicamente estás codificando octetos en porcentaje, no inventando un alfabeto nuevo.
Reservados frente a no reservados
Los caracteres no reservados pueden aparecer literalmente cuando pertenecen a ese componente:
A–Z a–z 0–9 - _ . ~
Los caracteres reservados tienen papeles sintácticos. Ejemplos:
: / ? # [ ] @ ! $ & ' ( ) * + , ; =
Si un reservado debe codificarse depende del componente que estés editando (scheme, authority, path, query, fragment). Como aprendiz, recuerda la idea guía: si un carácter podría leerse como puntuación en lugar de dato, codifícalo cuando lleva significado de dato.
Por qué el texto no ASCII se convierte en bytes porcentuales
Las URLs están históricamente sesgadas hacia US-ASCII. Los caracteres fuera del ASCII (café, 北京, emojis) se representan como bytes UTF-8; cada byte problemático aparece como %HH.
space → often encoded as %20
é (U+00E9 in UTF-8) → %C3%A9
Los decodificadores recorren los pares % para recuperar bytes y luego interpretan esos bytes (normalmente como UTF-8) para reconstruir texto Unicode.
«Codificar» no es cifrar
La codificación porcentual cambia la representación, no el significado en un sentido secreto. Cualquiera puede decodificarla. Trátala como higiene de transporte — como el escape en HTML —, no como confidencialidad.
https://example.com/search?q=café
⇒ café’s UTF-8 bytes may appear as caf%C3%A9 depending on tooling
Situaciones habituales que requieren codificación
- Espacios en nombres de archivo o términos de búsqueda pegados en URLs
- Ampersands pensados como dato literal (
Tom & Jerry) dentro de valores de parámetros de query - Barras o signos de interrogación cuando pertenecen a identificadores opacos, no a separadores
- Nombres de host internacionalizados gestionados mediante punycode (IDNA) — un mecanismo relacionado pero distinto de los escapes
%en paths y queries.
Entender dónde termina la estructura y empiezan los datos opacos es la habilidad central. Las lecciones siguientes afinan las reglas de % y el comportamiento típico de las bibliotecas.