Codificador URL
Codifica y decodifica URLs
Cómo usar Codificador URL
Codifica y decodifica URLs y cadenas de consulta. Codificación porcentual. Codificador y decodificador de URL gratuito.
¿Para qué sirve la codificación de URLs?
Las URLs solo pueden contener un conjunto limitado de caracteres ASCII. Los caracteres especiales —espacios, acentos, puntuación y caracteres no ASCII— deben codificarse como secuencias de porcentaje (%XX) para transmitirse de forma segura en una URL.
- Parámetros de consulta: Pasar la entrada del usuario como parámetros de URL requiere codificación. Una búsqueda de "café & croissant" se convierte en
caf%C3%A9%20%26%20croissanten la URL. - Peticiones a APIs: Construir URLs de API programáticamente —codificar los parámetros antes de añadirlos a la URL base previene peticiones malformadas y problemas de seguridad.
- Envío de datos de formulario: Los formularios HTML con method="GET" codifican los valores del formulario en la URL. Entender esta codificación ayuda a depurar el envío de formularios.
- Compartir enlaces: Compartir URLs que contienen caracteres no ASCII (letras acentuadas, caracteres CJK) —muchas plataformas los corrompen sin una codificación adecuada.
- Depuración: Decodificar una URL codificada para leer los parámetros originales —útil al inspeccionar peticiones de red en las DevTools del navegador.
Reglas de codificación: Las letras (A-Z, a-z), los dígitos (0-9) y los caracteres -_.~ nunca se codifican. Todo lo demás se codifica como % seguido de dos dígitos hexadecimales que representan los valores de byte UTF-8.
Frequently Asked Questions
¿Cuál es la diferencia entre encodeURI y encodeURIComponent en JavaScript?
encodeURI codifica una URL completa —deja sin codificar los caracteres estructurales de la URL (/, ?, &, #, :) ya que tienen significado en la URL. encodeURIComponent codifica todo excepto letras, dígitos y -_.~* —se usa para valores individuales de parámetros. Usa siempre encodeURIComponent para los valores de los parámetros de consulta.
¿Cuál es la diferencia entre + y %20 para los espacios?
Ambos representan un espacio en la codificación de URL, pero en diferentes contextos. %20 es correcto para todos los componentes de URL. El signo + representa un espacio solo en application/x-www-form-urlencoded (datos de formulario HTML) —no en segmentos de ruta. Usar + en una ruta codifica un signo más literal, no un espacio.
¿Por qué decodificar dos veces causa problemas?
Si %252F aparece en una URL, codifica %2F (que a su vez codifica /). Decodificar una vez da %2F. Decodificar dos veces da /. La doble codificación ocurre cuando un valor se codifica y luego toda la URL se codifica de nuevo. Causa problemas de seguridad (ataques de path traversal) cuando los servidores decodifican las URLs varias veces.
¿Qué caracteres deben codificarse en un segmento de ruta URL?
Los caracteres reservados con significado especial deben codificarse en los segmentos de ruta: espacio (%20), # (%23), % (%25), ? (%3F) y otros. La barra / es el separador de ruta —para incluir una barra literal en un segmento de ruta, codifícala como %2F.
¿Qué es Punycode y cómo se relaciona con la codificación de URLs?
Punycode convierte nombres de dominio internacionales (IDN) con caracteres no ASCII a codificación compatible con ASCII. 'münchen.de' se convierte en 'xn--mnchen-3ya.de' en Punycode. Es diferente de la codificación porcentual —se aplica específicamente a los nombres de dominio.
Codificación de URL vs Base64 vs entidades HTML
La codificación de URL (codificación porcentual) hace que los datos sean seguros para las URLs. La codificación Base64 hace que los datos binarios sean seguros para contextos de texto (correo, JSON). Las entidades HTML hacen que los caracteres especiales sean seguros para HTML: & se convierte en &, < en <. Cada una resuelve el mismo problema —representar datos en un conjunto de caracteres restringido— pero para diferentes contextos de destino.