Idioma : en | de | fr | es

¿Qué es urlencode y cómo funciona la codificación URL?

Las aplicaciones web intercambian datos constantemente a través de URL: consultas de búsqueda, filtros, parámetros de seguimiento, rutas multilingües y llamadas a API. Sin embargo, una URL solo puede contener un conjunto restringido de caracteres definidos por normas técnicas. Cuando una cadena incluye espacios, símbolos o caracteres no latinos, debe transformarse en una representación segura antes de su transmisión. Esta conversión garantiza que los navegadores, servidores e intermediarios interpreten la dirección exactamente como se pretende.

Esta guía explica la lógica técnica que hay detrás del proceso, muestra cómo funciona con ejemplos prácticos y destaca los errores de implementación más comunes que provocan enlaces rotos o parámetros dañados.

Qué significa la codificación URL en términos técnicos

Según el RFC 3986, la codificación URL significa que una URL solo puede contener caracteres ASCII «no reservados» específicos, y cualquier carácter fuera de este conjunto permitido debe convertirse antes de que pueda viajar de forma segura por la web.

La regla de transformación es sencilla:

% + dos dígitos hexadecimales

El valor hexadecimal representa el byte numérico del carácter original.

Por qué es necesaria esta transformación

Si los caracteres no se convierten correctamente:

  • Los espacios interrumpen la ruta URL.
  • Las cadenas de consulta pueden dividirse incorrectamente.
  • Los símbolos especiales pueden interpretarse erróneamente.
  • Los servidores pueden responder con errores 400 o 404.
  • Pueden surgir riesgos de seguridad debido a solicitudes malformadas.

Cuando se aplica correctamente, la conversión garantiza:

  • Comunicación HTTP estable.
  • Un análisis preciso de los parámetros.
  • Un comportamiento coherente entre navegadores.
  • Una decodificación fiable en el lado del servidor.

Cómo funciona el proceso de codificación paso a paso

Técnicamente, este mecanismo convierte los caracteres en su representación hexadecimal en bytes basada en la codificación ASCII o UTF-8. Cada byte resultante lleva como prefijo un signo de porcentaje.

Ejemplo 1: Espacio en una ruta de archivo

URL original:

https://example.com/new page.html

No se permite el uso de espacios dentro de una ruta.

Valor del carácter del espacio:

  • Decimal: 32
  • Hexadecimal: 20

Versión corregida:

https://example.com/new%20page.html

Ejemplo 2: Símbolos especiales dentro de los parámetros

Original:

https://example.com/search?q=smart locker & indoor

Si & se trata como un dato en lugar de como un separador de parámetros, debe codificarse.

Versión correcta:

https://example.com/search?q=smart%20locker%20%26%20indoor

Elementos convertidos:

  • Espacio → %20
  • & → %26

Importante: El símbolo «&» que separa los parámetros debe permanecer sin cambios.

Categorías de caracteres en las URL

Reconocer los tipos de caracteres ayuda a evitar transformaciones incorrectas.

Caracteres no reservados

Estos caracteres son seguros y pueden permanecer sin cambios:

Categoría

Caracteres

Letras

A–Z a–z

Números

0–9

Símbolos

- _ . ~

Ejemplo:

https://example.com/product-123_A

No es necesaria ninguna conversión.

Caracteres reservados

Estos caracteres definen la estructura de una URL:

Característica

Función

?

Inicia la cadena de consulta

&

Separa los parámetros

=

Asigna valores a los parámetros

#

Referencia de fragmento

/

Separador de ruta

:

Separador de esquema

Si estos símbolos se codifican incorrectamente, la dirección pierde su estructura lógica.

Incorrecto:

https://example.com/page%3Fid%3D10

Correcto:

https://example.com/page?id=10

Caracteres que deben convertirse

Los siguientes símbolos deben transformarse cuando se utilizan como datos literales:

  • Espacio
  • "
  • < >
  • { }
  • |
  • \
  • ^
  • `
  • %

Ejemplo con el signo de porcentaje

Original:

https://example.com/50% discount

Versión segura:

https://example.com/50%25%20discount

  • % se convierte en %25
  • El espacio se convierte en %20

Codificación de URL en aplicaciones web

En el desarrollo práctico, cuando los desarrolladores definen la codificación de URL, suelen referirse a datos que ya se han convertido al formato codificado en porcentaje antes de enviarse dentro de una solicitud HTTP.

Encontrará estos valores transformados en:

  • Envíos de formularios HTML.
  • Llamadas AJAX.
  • Parámetros de redireccionamiento.
  • URL de seguimiento.
  • Solicitudes de API REST.

Ejemplo: Datos del formulario.

El usuario introduce:

John Smith & Co.

El navegador envía:

John+Smith+%26+Co.

Nota: En el formato application/x-www-form-urlencoded, los espacios se sustituyen por + en lugar de %20.

Implementación en código.

La mayoría de los lenguajes de programación proporcionan utilidades integradas.

Ejemplo de JavaScript

Codificación de un parámetro:

encodeURIComponent(«indoor locker & storage»)

Resultado:

indoor%20locker%20%26%20storage

La decodificación restaura la cadena original:

decodeURIComponent(«indoor%20locker%20%26%20storage»)

Manejo de Unicode y URL multilingües

Los sistemas modernos se basan en UTF-8. Los caracteres no ASCII se convierten primero en secuencias de bytes UTF-8 y luego se expresan en formato porcentual.

Ejemplo:

Original:

https://example.com/product

Convertido:

https://example.com/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82

Cada byte UTF-8 se convierte en %XX.

Este mecanismo permite el manejo adecuado de contenidos internacionales y sitios web multilingües.

Tabla de referencia rápida

Caracteres

Decimales

Hexadecimales

Codificados

Espacio

32

20

%20

!

33

21

%21

34

22

%22

#

35

23

%23

%

37

25

%25

&

38

26

%26

=

61

3D

%3D

?

63

3F

%3F

Errores frecuentes en la implementación

Doble conversión

Ejemplo:

%20 → %2520

Esto ocurre cuando se vuelven a procesar datos que ya han sido transformados.

Consecuencias:

Redireccionamientos rotos.

Parámetros corruptos.

Depuración compleja.

Codificación de la dirección completa

Incorrecto:

encodeURIComponent(«https://example.com/page?id=5»)

Solo deben transformarse los valores de los parámetros, no los componentes estructurales de la dirección.

Manejo canónico inconsistente

Si se puede acceder tanto a la versión convertida como a la no convertida de una página, pueden aparecer URL duplicadas. Una lógica de generación de URL adecuada debe garantizar la coherencia.

Por qué es importante una implementación adecuada

En esencia, este mecanismo garantiza que los caracteres que no son seguros para la transmisión directa se representen en un formato estandarizado y fácil de transportar. Mantiene la comunicación HTTP predecible y legible por máquina.

Funciona entre bastidores en:

  • Marcos web.
  • Sistemas de enrutamiento.
  • Filtros de comercio electrónico.
  • Puntos finales de API.
  • Seguimiento analítico.

Cuando se implementa correctamente, permanece invisible para los usuarios. Cuando se configura incorrectamente, da lugar a solicitudes malformadas, problemas de indexación y un comportamiento inestable de las aplicaciones.

Es esencial que los desarrolladores que crean sistemas web fiables y escalables comprendan claramente cómo funciona la transformación de caracteres.