About URL Encoding
La codificación URL, también conocida como codificación por porcentaje, es un mecanismo para codificar información en un Identificador Uniforme de Recursos (URI). Se usa para convertir caracteres que no están permitidos en una URL en un formato que puede transmitirse por Internet. Esta codificación reemplaza caracteres ASCII inseguros con un "%" seguido de dos dígitos hexadecimales.
Usos comunes de la codificación URL
- Formateo de cadenas de consulta en URLs
- Envío de datos de formularios mediante solicitudes HTTP (application/x-www-form-urlencoded)
- Creación de URLs válidas con caracteres especiales o espacios
- Codificación de caracteres no ASCII en URLs
- Pasar parámetros complejos en APIs y servicios web
Cómo funciona la codificación URL
La codificación URL sigue estos principios:
- Los caracteres alfanuméricos (A-Z, a-z, 0-9) permanecen sin cambios
- Caracteres especiales como espacio, ?, &, =, %, + se convierten a sus equivalentes codificados por porcentaje
- Cada byte de un carácter codificado en UTF-8 se codifica por separado con porcentaje
- Un carácter de espacio puede codificarse como "%20" o "+" (en parámetros de consulta)
- Caracteres reservados como /, :, ?, #, [ tienen significados especiales en URLs y pueden tratarse de manera diferente según su contexto
encodeURI vs encodeURIComponent
JavaScript proporciona dos funciones para la codificación URL:
- encodeURI: Codifica un URI completo, preservando caracteres que son parte de la sintaxis del URI (como /:?#[]@!$&'()*+,;=)
- encodeURIComponent: Codifica un componente de URI (como el valor de un parámetro de consulta), codificando más caracteres incluyendo aquellos con significado especial en un URI
En la mayoría de los casos al codificar la entrada del usuario o parámetros de consulta, encodeURIComponent()
es la opción más segura ya que asegura que todos los caracteres potencialmente problemáticos se codifiquen correctamente.
Codificación URL para caracteres internacionales
Los navegadores modernos codifican caracteres no ASCII usando codificación UTF-8 y luego codifican cada byte con porcentaje. Esto asegura que caracteres internacionales, emojis y otros símbolos Unicode puedan incluirse correctamente en URLs. Por ejemplo, el carácter japonés "日" primero se codifica en UTF-8 como tres bytes (E6 97 A5) y luego se codifica con porcentaje como "%E6%97%A5".
Examples
Texto plano | Codificado URL |
---|---|
Hola Mundo | Hola%20Mundo |
https://example.com/?q=search term | https%3A%2F%2Fexample.com%2F%3Fq%3Dsearch%20term |
¡50% de descuento! | 50%25%20de%20descuento%21 |
Smith & Jones LLC | Smith%20%26%20Jones%20LLC |