🌐 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.

GUÍA

Más información

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.

Preguntas frecuentes

¿Cuál es la diferencia entre codificación de componente y codificación de URL completa?
La codificación de componente (equivalente a encodeURIComponent) codifica también caracteres estructurales como =, & y ?, y es la opción recomendada para valores de parámetros de consulta. La codificación de URL completa (equivalente a encodeURI) no codifica esos caracteres estructurales, por lo que sirve para codificar una URL entera.
¿Por qué es necesario codificar los espacios y caracteres acentuados?
Las URL solo permiten caracteres ASCII, así que los espacios, las letras acentuadas y otros caracteres especiales deben convertirse a códigos porcentuales (por ejemplo, el espacio se convierte en %20) para que la URL sea válida y el servidor pueda interpretarla correctamente.
¿Qué pasa si codifico dos veces una URL ya codificada?
Esto se conoce como doble codificación y provoca que el símbolo % se codifique de nuevo (por ejemplo, %20 se convierte en %2520), lo que hace que el servidor interprete mal la URL. Verifica siempre si el texto ya está codificado antes de aplicar la codificación.
¿Esta herramienta detecta si mi URL ya está codificada?
Introduce el texto en la pestaña correspondiente (codificar o decodificar): si intentas decodificar un texto que no está codificado o con un formato no válido, la herramienta mostrará el aviso "Codificación de URL no válida".
¿Necesito codificar toda la URL o solo los parámetros?
Normalmente solo es necesario codificar los valores de los parámetros de consulta (por ejemplo, el término de búsqueda), no la URL completa, ya que codificar caracteres estructurales como :// o / rompería la estructura de la URL.