🌐 ES

🔗 Codificador/Decodificador de URL

Codifica o decodifica URL de forma segura. Procesa caracteres especiales, caracteres internacionales y espacios en los parámetros de consulta para crear URL válidas.

GUIDE

Learn more

01

1. ¿Qué es la codificación de URL?

La codificación de URL (codificación porcentual) es el proceso de convertir caracteres no seguros de una URL en % seguido de un código hexadecimal. Como las URL solo permiten caracteres ASCII, los caracteres acentuados, los caracteres especiales y los espacios necesitan codificación. Por ejemplo, el espacio se convierte en %20, @ se convierte en %40, y la palabra española "año" se convierte en %61%C3%B1o. Definida en el estándar RFC 3986, cualquier carácter distinto de A-Z, a-z, 0-9, -, _, ., ~ debe codificarse. Las distintas partes de una URL (parámetros de consulta, rutas, fragmentos) tienen reglas de codificación diferentes.

02

2. Por qué codificar los caracteres especiales

Los caracteres especiales en una URL tienen un significado especial, por lo que deben codificarse para usarse como valores. Por ejemplo, & es un separador de parámetros, así que para incluir & en un valor hay que codificarlo como %26. = separa clave y valor, ? indica el inicio de la consulta y # el inicio del fragmento. Los espacios se codifican como + o %20. Sin codificar caracteres acentuados o especiales, los servidores pueden fallar al analizar la URL correctamente o devolver errores 404. Codifica siempre los términos de búsqueda o los valores introducidos por el usuario cuando los incluyas en una URL.

03

3. Codificación de parámetros de consulta

Los parámetros de consulta son la parte de la URL que más frecuentemente requiere codificación. Ejemplo: https://example.com/search?q=termino&category=IT. Aquí, tanto "termino" como "IT" deben codificarse. Usar encodeURIComponent() de JavaScript codifica también =, &, ?, lo que lo hace seguro para los valores de los parámetros de consulta. encodeURI() sirve para codificar una URL completa pero no codifica =, &, ?, por lo que no es adecuado para valores de consulta. Codifica siempre claves y valores individualmente con encodeURIComponent().

04

4. encodeURI frente a encodeURIComponent

JavaScript tiene dos funciones de codificación de URL. encodeURI() codifica una URL completa y no codifica los caracteres estructurales de la URL como :, /, ?, &, =. Se usa para URL completas. encodeURIComponent() codifica componentes de la URL (valores de parámetros, etc.) y codifica todos los caracteres estructurales. Se usa para componentes individuales como parámetros de consulta y segmentos de ruta. En la mayoría de los casos, usar encodeURIComponent() es más seguro. Se puede decodificar con decodeURI() y decodeURIComponent() respectivamente.

05

5. Nombres de dominio internacionalizados (IDN)

Los nombres de dominio en español u otros idiomas (por ejemplo, año.com) se convierten a Punycode. Punycode representa dominios Unicode en ASCII usando el prefijo xn--. Ejemplo: "año.com" se convierte en "xn--ao-tja.com". Los navegadores realizan esta conversión automáticamente, pero al procesarla directamente en el código se necesita una biblioteca Punycode. Ten en cuenta que las rutas y consultas de una URL usan la codificación porcentual habitual, mientras que los dominios usan Punycode.

06

6. Buenas prácticas de codificación de URL

Algunas consideraciones importantes sobre la codificación de URL: codifica siempre la entrada del usuario para prevenir ataques XSS. Ten cuidado de no codificar dos veces una URL ya codificada (problema de doble codificación). Al construir una URL, codifica cada parte individualmente y luego combínalas. Los clientes HTTP como fetch() y axios suelen codificar automáticamente, así que evita duplicaciones. Los servidores normalmente admiten decodificación automática, por lo que la decodificación explícita rara vez es necesaria. Al registrar o depurar URL, es más fácil de leer la forma decodificada.