Guía de Codificación de URLs: Por Qué y Cómo Codificar URLs
¿Alguna vez te preguntaste por qué los espacios en las URLs se convierten en %20 y los ampersands en %26? La codificación de URLs (también llamada codificación porcentual) convierte caracteres que no son seguros para URLs en un formato que los servidores web pueden entender.
Por Qué Importa la Codificación de URLs
Las URLs solo pueden contener un conjunto limitado de caracteres ASCII. Los caracteres especiales, espacios y texto no ASCII necesitan codificación para transmitirse de forma segura. Sin codificación, las URLs se rompen de maneras impredecibles — un espacio podría truncar una URL, un ampersand podría confundirse con un separador de parámetros.
Prueba nuestro Codificador/Decodificador de URLs para ver cómo cualquier texto se transforma al codificarse para URLs.
¿Qué Caracteres Necesitan Codificación?
Caracteres Seguros (no necesitan codificación)
Letras (A-Z, a-z), dígitos (0-9) y estos símbolos: -, _, ., ~
Caracteres Reservados (codificar cuando se usan como datos)
| Carácter | Codificado | Propósito en URLs |
|---|---|---|
: | %3A | Separador de esquema |
/ | %2F | Separador de ruta |
? | %3F | Inicio de cadena de consulta |
# | %23 | Identificador de fragmento |
& | %26 | Separador de parámetros |
= | %3D | Separador clave-valor |
+ | %2B | A menudo representa espacio |
@ | %40 | Separador de información de usuario |
% | %25 | Indicador de codificación |
Siempre Codificar
Espacios (%20), caracteres no ASCII (bytes UTF-8 codificados) y cualquier carácter fuera del conjunto seguro.
Codificación de URLs en la Práctica
Parámetros de Consulta
El caso de uso más común. Al construir URLs de búsqueda o solicitudes de API:
https://api.example.com/search?q=hello%20world&lang=en
Datos de Formulario
Los formularios HTML con method="GET" codifican los valores de los campos automáticamente en la URL. Los espacios se convierten en + en la codificación de formularios (ligeramente diferente de la codificación porcentual).
Segmentos de Ruta
Los nombres de archivos e identificadores de recursos en las rutas de URL también necesitan codificación. Un archivo llamado my report.pdf se convierte en my%20report.pdf en la URL.
Codificación en Diferentes Lenguajes
JavaScript:
encodeURIComponent('hello world & more')
// "hello%20world%20%26%20more"
decodeURIComponent('hello%20world')
// "hello world"
Python:
from urllib.parse import quote, unquote
quote('hello world & more')
# 'hello%20world%20%26%20more'
Errores Comunes
- Doble codificación — Codificar una URL ya codificada convierte
%20en%2520 - Usar
encodeURIen lugar deencodeURIComponent—encodeURIomite caracteres reservados que importan en valores de consulta - No codificar signos
+— En URLs,+puede significar espacio. Codifica los signos más literales como%2B - Olvidar caracteres no ASCII — Los caracteres Unicode necesitan codificación UTF-8 primero, luego codificación porcentual
Preguntas Frecuentes
¿Cuál es la diferencia entre encodeURI y encodeURIComponent?
encodeURI codifica una URL completa, omitiendo caracteres como :, /, ?, #. encodeURIComponent codifica todo excepto los caracteres no reservados — úsalo para valores individuales de parámetros de consulta.
¿Por qué los espacios a veces se convierten en + y a veces en %20?
La codificación de formularios (application/x-www-form-urlencoded) usa + para espacios. La codificación porcentual estándar usa %20. Ambos son válidos en diferentes contextos.
Recursos Relacionados
- Codificación Base64 Explicada — otro esquema de codificación esencial
- Patrones de Diseño de APIs JSON — construyendo APIs que manejan la codificación correctamente
- Codificador/Decodificador de URLs — codifica y decodifica URLs instantáneamente
- Codificador Base64 — codifica datos en formato Base64