ByteCompress

Codificador de URL

Codifica caracteres especiales en URLs o componentes URI individuales para que sean seguros para transmitir en solicitudes HTTP, cadenas de consulta y datos de formularios. Sigue RFC 3986.

0 chars
FreeClient-sideNo signup

Un carácter de espacio en una cadena de consulta de URL rompe silenciosamente la solicitud. RFC 3986 (Identificador de Recurso Uniforme: Sintaxis Genérica) define qué caracteres son seguros en una URL y cuáles deben ser codificados por porcentaje. La codificación por porcentaje reemplaza cada byte inseguro con % seguido de dos dígitos hexadecimales en mayúsculas. Este codificador basado en navegador aplica RFC 3986 al instante, sin transmitir tus datos a ningún lado. Úsalo para codificar URLs completas o valores individuales de parámetros de consulta y obtén una salida conforme a los estándares cada vez.

Cómo Codificar una URL

  1. Pega la URL o texto en el campo de entrada.
  2. Elige el modo URL Completo para codificar solo caracteres inseguros, o el modo Componente para codificar todos los caracteres especiales, incluyendo & y =.
  3. La salida codificada por porcentaje aparece en el panel de resultados.
  4. Copia la cadena codificada para usar en tu solicitud, código o documentación.

Entendiendo la Codificación por Porcentaje

El Estándar RFC 3986

RFC 3986 (IETF, 2005) define dos categorías de caracteres en una URI. Los caracteres no reservados (A-Z a-z 0-9 - _ . ~) pueden aparecer sin codificación. Los caracteres reservados (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) tienen un significado estructural especial y pueden o no necesitar codificación dependiendo del contexto. Cada otro carácter - incluyendo espacios, Unicode no ASCII y caracteres fuera de estos conjuntos - debe ser codificado por porcentaje.

encodeURI vs encodeURIComponent

JavaScript proporciona dos funciones de codificación. encodeURI() codifica una URL completa y deja intactos los caracteres reservados porque cumplen roles estructurales. encodeURIComponent() también codifica caracteres estructurales, tratándolos como datos literales - está diseñado para nombres y valores de parámetros de consulta individuales donde & y = romperían la sintaxis de URL. El modo URL Completo de esta herramienta corresponde a encodeURI; el modo Componente corresponde a encodeURIComponent.

Ejemplo

Entrada

Hola Mundo! @2024

Salida (modo Componente)

Hola%20Mundo!%20%402024

El espacio se codifica como %20 (estándar RFC 3986); @ se convierte en %40. El signo de exclamación es un carácter no reservado en algunos contextos y puede o no ser codificado dependiendo del modo.

Casos de Uso Comunes

  • Valores de parámetros de consulta - Codifica valores que contienen &, = o + antes de añadir a una URL
  • Consultas de motores de búsqueda - Codifica la entrada de búsqueda del usuario antes de construir una URL de redirección
  • Construcción de solicitudes API - Codifica segmentos de ruta que contienen barras, espacios o caracteres especiales
  • Parámetros OAuth - Las cadenas base de firma de OAuth 1.0 requieren codificación por porcentaje según RFC 5849

Errores Comunes

  • Doble codificación - Si un valor ya está codificado por porcentaje, codificarlo nuevamente codifica el % mismo, produciendo %2520 en lugar de %20
  • Usar el modo URL Completo para valores de parámetros - El modo URL Completo deja & y = sin codificar, rompiendo la sintaxis de la cadena de consulta; usa el modo Componente para valores de parámetros
  • Olvidar caracteres no ASCII - El texto no ASCII debe ser convertido a bytes UTF-8 primero, luego cada byte se codifica por separado

Para revertir el proceso, utiliza el Decodificador de URL. Para datos binarios transportados en parámetros de consulta de URL, primero codifica con el Codificador Base64 en modo seguro para URL, luego la salida ya es segura para URL sin codificación adicional por porcentaje.

Preguntas frecuentes

¿Cuál es la diferencia entre la codificación de URL y la codificación Base64?

La codificación por porcentaje reemplaza caracteres inseguros con secuencias hexadecimales %XX mientras mantiene los caracteres seguros tal cual, por lo que la longitud de salida es similar a la de entrada. Base64 convierte todos los datos en un alfabeto de 64 caracteres, aumentando el tamaño en un 33% pero asegurando que el resultado contenga solo caracteres ASCII seguros. La codificación por porcentaje hace que caracteres específicos sean seguros para URL; Base64 codifica datos binarios arbitrarios como texto.

¿Cuándo debo usar encodeURI vs encodeURIComponent en JavaScript?
encodeURI() se utiliza para codificar una URL completa - preserva caracteres estructurales como : / ? # & =. encodeURIComponent() se utiliza para codificar valores individuales dentro de una URL - codifica caracteres estructurales para que se traten como datos literales en lugar de sintaxis de URL. Si tienes dudas, usa encodeURIComponent() para cualquier entrada proporcionada por el usuario.
¿Por qué un espacio se convierte en %20 en algunos codificadores pero + en otros?
%20 es la codificación por porcentaje RFC 3986 para un espacio y es correcta para segmentos de ruta URI y valores de consulta. El signo + que representa un espacio es específico de application/x-www-form-urlencoded (envíos de formularios HTML), que es anterior a RFC 3986. Ambos son válidos en sus respectivos contextos, pero %20 es el estándar universal fuera de los formularios HTML.
¿La codificación de URL funciona para caracteres no ASCII?

Sí. Los caracteres no ASCII se convierten primero en bytes UTF-8, luego cada byte se codifica por separado. El carácter ş (U+015F) se convierte en %C5%9F. El carácter chino 中 (U+4E2D) se convierte en %E4%B8%AD. Los navegadores y servidores modernos esperan codificación UTF-8 para caracteres no ASCII en URLs.

¿Se envían mis datos de URL a sus servidores cuando uso esta herramienta?

No. Toda la codificación utiliza encodeURI() o encodeURIComponent() ejecutándose localmente en tu navegador. Las URLs, parámetros de consulta, tokens de autenticación y cualquier otro dato que pegues nunca se transmiten a nuestros servidores.