Codificador de URL: Escape de Caracteres Especiales en URLs en Línea Gratis
Herramienta gratuita para escapar cadenas de URL que codifica caracteres especiales al instante. Convierte espacios, Unicode y símbolos al formato de codificación por porcentaje. ¡Perfecto para APIs, formularios web y URLs internacionales. Pruébalo ahora!
Escapador de Cadenas URL
Documentación
Codificación de URL: qué es y cómo funciona
La codificación de URL, también llamada codificación porcentual, es una forma de representar caracteres en una dirección web utilizando únicamente un conjunto reducido de caracteres ASCII seguros. Funciona reemplazando un carácter no seguro por un signo % seguido de dos dígitos hexadecimales. Esta herramienta para escapar cadenas de URL codifica el texto de la misma manera que la función integrada encodeURIComponent de JavaScript.
Por qué es necesario codificar las URL
Una URL solo puede contener un conjunto limitado de caracteres: letras, dígitos y algunos signos de puntuación. Los espacios, las letras acentuadas, los caracteres de alfabetos no latinos y símbolos como & o = pueden romper una URL o cambiar su significado si aparecen sin codificar. Por ejemplo, un espacio dentro de un enlace puede hacer que un navegador o un servidor lea la URL como dos partes separadas. La codificación porcentual reemplaza estos caracteres por un código que todos los navegadores y servidores pueden interpretar de la misma manera.
Caracteres que esta herramienta deja sin cambios
Esta herramienta nunca modifica los siguientes caracteres. Se conservan tal cual:
- Letras mayúsculas y minúsculas:
A–Z,a–z - Dígitos:
0–9 - Los signos de puntuación
-._~!*'()
Cualquier otro carácter se codifica porcentualmente, incluidos:
- El carácter de espacio y signos de puntuación como
:/?#[]@$&+,;= - Las letras acentuadas y cualquier otro carácter no ASCII o Unicode
- Un carácter
%literal, que siempre se convierte en%25, incluso si ya formaba parte de una secuencia codificada porcentualmente
Algunas guías generales sobre la sintaxis de las URL agrupan ! * ' ( y ) con otros signos de puntuación como caracteres que «pueden necesitar codificación» en ciertos contextos. Esta herramienta específica no los codifica porque sigue el conjunto de reglas de encodeURIComponent, según el cual se consideran seguros.
Cómo calcular una cadena codificada porcentualmente (fórmula)
La herramienta comprueba cada carácter de la entrada individualmente y aplica esta regla:
- Si el carácter es uno de los caracteres sin cambios indicados anteriormente, se conserva tal cual.
- En caso contrario, el carácter se convierte en su secuencia de bytes UTF-8. Las letras latinas acentuadas, griegas, cirílicas y árabes utilizan dos bytes. Los caracteres chinos, japoneses y coreanos utilizan tres. Los emoji utilizan cuatro.
- Cada byte se escribe como un número hexadecimal de dos dígitos.
- Se coloca un
%delante de cada par hexadecimal. - Los resultados se unen en orden para formar la cadena codificada.
Ejemplo
Entrada: Jürgen & Björk
Proceso carácter por carácter:
| Carácter | Resultado |
|---|---|
J | J (sin cambios) |
ü | %C3%BC (bytes UTF-8 0xC3, 0xBC) |
rgen | rgen (sin cambios) |
(espacio) | %20 |
& | %26 |
(espacio) | %20 |
Bj | Bj (sin cambios) |
ö | %C3%B6 (bytes UTF-8 0xC3, 0xB6) |
rk | rk (sin cambios) |
Salida: J%C3%BCrgen%20%26%20Bj%C3%B6rk
Un segundo ejemplo muestra cómo funciona el conjunto de caracteres sin cambios. La codificación de la cadena -_.!~*'() produce -_.!~*'(), exactamente el mismo texto, porque todos sus caracteres pertenecen al conjunto de caracteres no reservados. La codificación de la cadena 100% produce 100%25, porque el signo % no es un carácter seguro.
Decodificación de una cadena codificada porcentualmente
La decodificación invierte el proceso: cada secuencia %XX se lee como un byte hexadecimal, los bytes se vuelven a agrupar en su carácter UTF-8 original y el carácter reemplaza la secuencia. Por ejemplo, %C3%BC se decodifica de nuevo como ü, y %20 se decodifica como un espacio. Esta herramienta solo codifica; se necesita un decodificador independiente para invertir el proceso.
Usos habituales
La codificación porcentual se utiliza siempre que un texto escrito por una persona, en lugar de texto escrito por un programador, deba formar parte de una URL:
- Cuadros de búsqueda que colocan el término buscado en la barra de direcciones, como
?q=shoes%20%26%20bags - Parámetros de consulta que contienen nombres, direcciones u otros datos del usuario
- Enlaces a páginas cuyos títulos están escritos en idiomas que utilizan letras acentuadas o alfabetos no latinos
- Solicitudes a API que envían tokens o identificadores como parte de la URL
Ejemplos de código
1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
41# Python
2import urllib.parse
3urllib.parse.quote("Jürgen & Björk", safe="!*'()")
4# 'J%C3%BCrgen%20%26%20Bj%C3%B6rk'
5La función quote de Python siempre deja sin cambios las letras, los dígitos y - . _ ~. Los cinco caracteres adicionales ! * ' ( ) deben incluirse en safe para coincidir con esta herramienta. Sin ellos, quote devuelve %21 %2A %27 %28 %29.
Historia
La idea de codificar caracteres no seguros en una URL se remonta a RFC 1738, de 1994, uno de los primeros documentos que definieron el formato de las URL. RFC 3986, publicado en 2005, actualizó las reglas y definió formalmente el conjunto de caracteres «no reservados» que nunca necesitan codificación. encodeURIComponent, la función de JavaScript en la que se basa esta herramienta, sigue un conjunto de caracteres no reservados ligeramente más amplio que RFC 3986: también deja ! * ' ( y ) sin codificar, de acuerdo con una versión anterior de la especificación de URI.
Preguntas frecuentes
¿Cuál es la diferencia entre la codificación de URL y el escape de URL?
Son lo mismo. Ambos términos describen la codificación porcentual, en la que un carácter se reemplaza por % seguido de dos dígitos hexadecimales.
¿Por qué !, *, ', ( y ) permanecen sin cambios en esta herramienta?
Esta herramienta utiliza encodeURIComponent, que trata esos cinco caracteres como seguros y los deja exactamente como se escribieron. Otras funciones de codificación y algunos servidores pueden exigir que se codifiquen, por lo que conviene comprobar el sistema de destino si esto causa algún problema.
¿Cuál es la diferencia entre %20 y + para representar un espacio?
Ambos representan un espacio. %20 es la codificación porcentual general de un espacio. El signo + es un caso especial que solo se utiliza dentro de datos application/x-www-form-urlencoded, el formato empleado por los envíos de formularios HTML, no por esta herramienta.
¿Esta herramienta decodifica texto que ya está codificado?
No. Solo codifica. Si la entrada ya contiene un signo %, ese % se trata como un carácter literal y se convierte en %25 en la salida, en lugar de dejarse sin cambios.
¿Cómo se procesan los caracteres no latinos, como el texto chino o árabe?
Cada carácter se convierte primero en su secuencia de bytes UTF-8 y después cada byte se codifica porcentualmente. Un carácter chino utiliza tres bytes, por lo que produce tres grupos %XX. Una letra árabe utiliza dos bytes, por lo que produce dos.
¿Cuándo rechaza la herramienta la codificación de un texto?
Solo cuando el texto contiene la mitad de un par suplente. Un par suplente es el código de dos partes que almacena un carácter superior a U+FFFF, como un emoji. Una mitad aislada no tiene una forma UTF-8 válida, por lo que la herramienta muestra un error en lugar de un resultado. La escritura normal no puede producir uno; normalmente procede de una copia truncada o de un enlace dañado.
¿Debo codificar una URL completa o solo una parte?
Solo deben codificarse las partes que contienen datos del usuario, como los valores de consulta o los segmentos de ruta, no las partes que forman la estructura de la URL, como https:// y el nombre de dominio. Codificar una URL completa con un codificador de componentes también convertiría sus caracteres :, / y ? en códigos porcentuales, lo que rompería la dirección.