url-encode url-decode percent-encoding developer-tools rfc3986

Codificar URL Online Gratis: Guía definitiva de codificación por porcentaje

Codifica y decodifica URLs online gratis. Aprende sobre la codificación por porcentaje RFC 3986, caracteres reservados y problemas comunes en la estructura de URLs.

Codificar URL Online Gratis: Guía definitiva de codificación por porcentaje

La codificación URL, también conocida como codificación por porcentaje (Percent-encoding), es un mecanismo para codificar información en un Identificador de Recursos Uniforme (URI). Aunque pueda parecer un simple detalle técnico, es una parte fundamental de cómo funciona la web, asegurando que los datos se transmitan correctamente entre navegadores y servidores.

En esta guía, profundizaremos en por qué es necesaria la codificación URL, cómo funciona y te proporcionaremos una herramienta online conveniente para gestionarla.

¿Por qué necesitamos la codificación URL?

Las URLs (Localizadores de Recursos Uniformes) tienen un conjunto de caracteres limitado definido por el RFC 3986. Solo pueden contener ciertos caracteres. Si necesitas incluir caracteres que no forman parte de este conjunto, como espacios, caracteres no ASCII (como los del chino o árabe) o caracteres con un significado especial en una URL (como & o =), debes codificarlos.

Caracteres Reservados vs. No Reservados

Según la especificación, los caracteres se dividen en dos categorías:

  1. Caracteres No Reservados: Pueden usarse en una URL sin ser codificados. Incluyen:

    • Letras mayúsculas y minúsculas (A-Z, a-z)
    • Dígitos decimales (0-9)
    • Guion (-), guion bajo (_), punto (.) y tilde (~)
  2. Caracteres Reservados: Tienen un significado especial en una URL (por ejemplo, se usan como delimitadores como /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =). Si estos caracteres son parte de los datos que se envían (como una consulta de búsqueda) y no actúan como delimitadores, deben codificarse.

Cómo funciona la codificación por porcentaje

La codificación por porcentaje reemplaza un carácter reservado con un % seguido de la representación hexadecimal de dos dígitos de su valor ASCII.

Por ejemplo:

  • Un espacio se convierte en %20 (valor ASCII 32, hex 20).
  • Un signo de exclamación (!) se convierte en %21 (valor ASCII 33, hex 21).
  • Un ampersand (&) se convierte en %26 (valor ASCII 38, hex 26).

Tabla de caracteres codificados comunes

Carácter Valor Codificado Descripción
Espacio %20 o + Depende de la parte de la URL
! %21 Signo de exclamación
# %23 Almohadilla (identificador de fragmento)
$ %24 Signo de dólar
& %26 Ampersand (delimitador de consulta)
' %27 Comilla simple
( %28 Paréntesis izquierdo
) %29 Paréntesis derecho
* %2A Asterisco
+ %2B Signo más
, %2C Coma
/ %2F Barra diagonal (delimitador de ruta)
: %3A Dos puntos
; %3B Punto y coma
= %3D Signo igual (parámetro de consulta)
? %3F Signo de interrogación (inicio de consulta)
@ %40 Arroba

Manejo de espacios: %20 vs. +

Es posible que hayas notado que a veces los espacios se codifican como %20 y otras veces como +.

  • %20 es la codificación estándar para un espacio en cualquier parte de la URI.
  • + se usa específicamente para espacios dentro de la cadena de consulta (query string) de una URL (después del ?). Esto proviene del tipo de medio heredado application/x-www-form-urlencoded utilizado por los formularios HTML.

Las herramientas y librerías modernas suelen manejar esto automáticamente, pero es un punto común de confusión para los desarrolladores.

Codificación URL en programación

La mayoría de los lenguajes de programación proporcionan funciones integradas para la codificación y decodificación URL.

JavaScript

// Codificar un componente de URI
const consulta = "hola mundo & amigos";
const codificado = encodeURIComponent(consulta);
console.log(codificado); // Resultado: hola%20mundo%20%26%20amigos

// Decodificar
const decodificado = decodeURIComponent(codificado);
console.log(decodificado); // Resultado: hola mundo & amigos

Python

import urllib.parse

consulta = "hola mundo & amigos"
codificado = urllib.parse.quote(consulta)
print(codificado) # Resultado: hola%20mundo%20%26%20amigos

decodificado = urllib.parse.unquote(codificado)
print(decodificado) # Resultado: hola mundo & amigos

PHP

<?php
$consulta = "hola mundo & amigos";
$codificado = urlencode($consulta);
echo $codificado; // Resultado: hola+mundo+%26+amigos

$decodificado = urldecode($codificado);
echo $decodificado; // Resultado: hola mundo & amigos
?>

Preguntas frecuentes (FAQ)

1. ¿Debo codificar toda la URL o solo partes de ella?

Normalmente solo debes codificar los valores de tus parámetros de consulta o segmentos específicos de la ruta. Codificar toda la URL (incluyendo los separadores http://, :, y /) la invalidará como URI. Usa encodeURIComponent() para valores y encodeURI() para toda la URI (omitirá los delimitadores).

2. ¿Es la codificación URL lo mismo que la codificación Base64?

No. La codificación URL (codificación por porcentaje) se usa para escapar caracteres en una URL. Base64 se usa para representar datos binarios como una cadena de 64 caracteres ASCII. Sirven para propósitos completamente diferentes.

3. ¿Por qué recibí un error de "URI malformada"?

Esto suele suceder durante la decodificación cuando la cadena contiene un carácter % que no va seguido de dos dígitos hexadecimales válidos. Por ejemplo, index.php?nombre=100% causaría un error porque el % al final no es un inicio válido de una secuencia codificada.

4. ¿La codificación URL soporta Unicode?

Sí. La codificación URL moderna (basada en UTF-8) maneja Unicode convirtiendo primero el carácter a su secuencia de bytes UTF-8 y luego codificando por porcentaje cada byte. Por ejemplo, el carácter (UTF-8: E6 B1 89) se convierte en %E6%B1%89.

Conclusión

La codificación URL es una herramienta sencilla pero vital para asegurar la integridad de los datos en la web. Ya sea que estés construyendo una aplicación web, depurando llamadas a APIs o simplemente tengas curiosidad por cómo funciona la web, entender la codificación por porcentaje es esencial.

¿Necesitas codificar o decodificar una cadena rápidamente? ¡Usa nuestra Herramienta de Codificación/Decodificación URL para hacerlo en segundos!