Codificación de URL: Todo lo que necesitas saber
· 12 min de lectura
Tabla de contenidos
- Entendiendo la codificación de URL
- Por qué la codificación de URL es necesaria
- Cómo funciona la codificación de URL
- Caracteres que necesitan codificación
- Casos de uso comunes para la codificación de URL
- Codificación de diferentes conjuntos de caracteres
- Prácticas avanzadas de codificación
- Errores comunes y cómo evitarlos
- Codificación de URL en lenguajes de programación
- Consideraciones de seguridad
- Preguntas frecuentes
- Artículos relacionados
Entendiendo la codificación de URL
La codificación de URL, también conocida como codificación de porcentaje, es un mecanismo fundamental para garantizar la transmisión confiable de datos a través de internet. Convierte caracteres que no están permitidos en las URL en un formato que puede ser transmitido e interpretado de forma segura por navegadores web, servidores y otra infraestructura de internet.
En esencia, la codificación de URL aborda un problema simple: las URL solo pueden contener un conjunto limitado de caracteres del conjunto de caracteres ASCII. Cuando necesitas incluir caracteres fuera de este conjunto, ya sean símbolos especiales, espacios o caracteres no latinos, deben codificarse en un formato universalmente reconocido.
El proceso de codificación reemplaza caracteres problemáticos con un signo de porcentaje (%) seguido de dos dígitos hexadecimales que representan el código ASCII o UTF-8 del carácter. Esto asegura que cada componente de tu URL se transmita exactamente como se pretende, sin interpretación errónea o pérdida de datos.
Consejo rápido: Usa nuestra herramienta Codificador y decodificador de URL para codificar o decodificar instantáneamente cualquier cadena de URL sin escribir código.
Por qué la codificación de URL es necesaria
La necesidad de la codificación de URL proviene de las restricciones de diseño originales de internet y la especificación de URL definida en RFC 3986. Las URL fueron diseñadas para funcionar con un conjunto de caracteres limitado para garantizar la compatibilidad entre diferentes sistemas, protocolos y regiones geográficas.
Sin la codificación de URL, surgirían varios problemas críticos:
- Ambigüedad en la estructura de URL: Caracteres especiales como
?,&y#tienen significados específicos en las URL. Si estos caracteres aparecen en tus datos sin codificación, serán interpretados como delimitadores de URL en lugar de contenido. - Incompatibilidad de conjuntos de caracteres: Diferentes sistemas pueden interpretar la misma secuencia de bytes de manera diferente, lo que lleva a datos corruptos o solicitudes fallidas.
- Violaciones de protocolo: HTTP y otros protocolos de internet esperan que las URL se ajusten a reglas de formato específicas. Los caracteres no codificados pueden causar errores de protocolo.
- Vulnerabilidades de seguridad: Los caracteres especiales no codificados pueden ser explotados para ataques de inyección o para eludir filtros de seguridad.
Considera una consulta de búsqueda para "gatos y perros" en una URL. Sin codificación, el ampersand sería interpretado como un separador de parámetros, potencialmente dividiendo tu consulta en dos parámetros separados. La codificación de URL transforma esto en gatos%20y%20perros, preservando el significado previsto.
La limitación ASCII
Las URL se basan en el conjunto de caracteres ASCII, que incluye solo 128 caracteres. De estos, solo un subconjunto, conocido como "caracteres no reservados", puede aparecer en las URL sin codificación. Estos caracteres no reservados incluyen:
- Letras mayúsculas y minúsculas (A-Z, a-z)
- Dígitos decimales (0-9)
- Guion (
-), punto (.), guion bajo (_) y tilde (~)
Todo lo demás requiere codificación para garantizar la transmisión e interpretación adecuadas a través de internet.
Cómo funciona la codificación de URL
El proceso de codificación de URL sigue un algoritmo sencillo que convierte caracteres en sus equivalentes codificados en porcentaje. Comprender este proceso te ayuda a solucionar problemas de codificación y escribir aplicaciones web más robustas.
El algoritmo de codificación
Cuando un carácter necesita ser codificado, el proceso funciona de la siguiente manera:
- Identificar el carácter: Determinar qué carácter necesita codificación según el componente de URL y las reglas de codificación.
- Obtener el valor de byte: Convertir el carácter a su representación de byte usando codificación UTF-8 (o ASCII para caracteres básicos).
- Convertir a hexadecimal: Expresar cada byte como dos dígitos hexadecimales.
- Agregar prefijo de porcentaje: Anteponer cada par hexadecimal con un signo de porcentaje (
%).
Por ejemplo, el carácter de espacio tiene un valor ASCII de 32 (decimal) o 20 (hexadecimal). Cuando se codifica, se convierte en %20. El símbolo arroba (@) tiene un valor ASCII de 64 (decimal) o 40 (hexadecimal), por lo que se codifica como %40.
Codificación multibyte UTF-8
Para caracteres fuera del rango ASCII, la codificación UTF-8 produce múltiples bytes, cada uno de los cuales se codifica en porcentaje. El emoji "😀" (cara sonriente) se codifica en UTF-8 como cuatro bytes: F0 9F 98 80. En una URL, esto se convierte en %F0%9F%98%80.
Esta codificación multibyte asegura que los caracteres de cualquier idioma o conjunto de símbolos puedan transmitirse de forma segura en las URL, haciendo que la web sea verdaderamente internacional.
Consejo profesional: Al depurar problemas de codificación de URL, usa las herramientas de desarrollo de tu navegador para inspeccionar la URL codificada real que se está enviando. La pestaña Red muestra la solicitud codificada sin procesar, lo que puede revelar problemas de codificación.
Caracteres que necesitan codificación
No todos los caracteres requieren codificación en todos los contextos, pero comprender qué caracteres necesitan codificación y cuándo es esencial para construir aplicaciones web confiables. Los requisitos de codificación varían según la parte de la URL con la que estés trabajando.
Caracteres reservados
Los caracteres reservados tienen un significado especial en la sintaxis de URL y deben codificarse cuando se usan como datos en lugar de delimitadores. Estos caracteres incluyen:
| Carácter | Propósito en las URL | Forma codificada |
|---|---|---|
: |
Separa esquema y host, delimitador de puerto | %3A |
/ |
Separador de segmentos de ruta | %2F |
? |
Marca el inicio de la cadena de consulta | %3F |
# |
Marca el inicio del identificador de fragmento | %23 |
[ ] |
Delimitadores de dirección IPv6 | %5B %5D |
@ |
Separa credenciales del host | %40 |
! $ & ' ( ) * + , ; = |
Subdelimitadores para varios propósitos | %21 %24 %26 %27 %28 %29 %2A %2B %2C %3B %3D |
Caracteres inseguros
Ciertos caracteres se consideran inseguros porque pueden ser modificados o malinterpretados durante la transmisión. Estos siempre requieren codificación:
| Carácter | Por qué es inseguro | Forma codificada |
|---|---|---|
| Espacio | Puede ser eliminado o convertido a + |
%20 |
" |
Usado para delimitar URL en HTML | %22 |
< > |
Usados en etiquetas HTML, pueden ser filtrados | %3C %3E |
% |
Delimitador de codificación en sí mismo | %25 |
\ |
Separador de ruta en algunos sistemas | %5C |
^ ` { } | |
No son universalmente compatibles | %5E %60 %7B %7D %7C |
Codificación dependiente del contexto
Los requisitos de codificación difieren según el componente de URL con el que estés trabajando. Un carácter que es seguro en un contexto puede requerir codificación en otro:
- Segmentos de ruta: Las barras diagonales separan segmentos de ruta, por lo que no deben codificarse a menos que sean parte del nombre del segmento en sí.
- Parámetros de consulta: Los ampersands y signos de igual tienen un significado especial, por lo que deben codificarse cuando aparecen en valores de parámetros.
- Identificadores de fragmento: La mayoría de los caracteres están permitidos, pero la codificación aún se recomienda para mantener la consistencia.
Casos de uso comunes para la codificación de URL
La codificación de URL aparece en numerosos escenarios del mundo real. Comprender estos casos de uso te ayuda a reconocer cuándo y cómo aplicar la codificación en tus propios proyectos.
Consultas de búsqueda
Los motores de búsqueda dependen en gran medida de la codificación de URL para manejar las consultas de los usuarios. Cuando buscas "cómo hornear un pastel?" en Google, la URL se convierte en algo como:
https://www.google.com/search?q=c%C3%B3mo+hornear+un+pastel%3F
Observa que los espacios se codifican como signos más (una codificación alternativa para espacios en cadenas de consulta) y el signo de interrogación se codifica como %3F para distinguirlo del delimitador de cadena de consulta.
Envíos de formularios
Cuando los formularios HTML se envían usando el método GET, los datos del formulario se codifican y se agregan a la URL. Considera un formulario de inicio de sesión con campos de nombre de usuario y contraseña:
https://example.com/login?username=juan.perez%40example.com&password=C%40ntr%40s3%C3%B1a%21
La dirección de correo electrónico y los caracteres especiales en la contraseña se codifican correctamente para evitar problemas de interpretación.
Nota de seguridad: Nunca envíes datos sensibles como contraseñas en parámetros de URL. Este ejemplo es solo para ilustración. Siempre usa solicitudes POST con HTTPS para autenticación.
Solicitudes de API
Las API RESTful a menudo incluyen parámetros en las URL que requieren codificación. Al filtrar resultados o pasar estructuras de datos complejas, la codificación adecuada asegura que la API reciba exactamente lo que pretendías:
https://api.example.com/users?filter=created_at>2024-01-01&sort=-name
El símbolo mayor que en el parámetro de filtro debe codificarse como %3E para evitar confusión con entidades HTML u otras interpretaciones.
Descargas de archivos
Al servir archivos con nombres no ASCII, la codificación de URL asegura que el nombre del archivo se transmita correctamente:
https://example.com/downloads/Presentaci%C3%B3n%202024.pdf
La "ó" acentuada en "Presentación" se codifica como %C3%B3 (su representación UTF-8), permitiendo a usuarios de todo el mundo descargar el archivo independientemente de la codificación de caracteres de su sistema.
Compartir en redes sociales
Las plataformas de redes sociales usan codificación de URL al compartir enlaces con texto prellenado. Un enlace para compartir en Twitter podría verse así:
https://twitter.com/intent/tweet?text=Echa%20un%20vistazo%20a%20este%20art%C3%ADculo%21&url=https%3A%2F%2Fexample.com%2Farticle
Tanto el texto del tweet como la URL que se comparte están codificados para garantizar que