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 los caracteres de una dirección web usando solo un pequeño conjunto de caracteres ASCII seguros. Funciona sustituyendo cada carácter no seguro por un signo % seguido de dos dígitos hexadecimales. Esta herramienta de escape de cadenas URL codifica el texto del mismo modo que la función integrada de JavaScript encodeURIComponent.
Por qué las URL necesitan codificación
Una URL solo puede contener un conjunto limitado de caracteres: letras, dígitos y unos pocos signos de puntuación. Los espacios, las letras con acento, los caracteres de alfabetos no latinos y símbolos como & o = pueden romper una URL o cambiar su significado si aparecen sin codificar. Un espacio dentro de un enlace, por ejemplo, puede hacer que un navegador o un servidor lea la URL como dos partes separadas. La codificación porcentual sustituye estos caracteres por un código que todos los navegadores y servidores leen de la misma manera.
Caracteres que esta herramienta deja sin cambios
Esta herramienta nunca modifica los caracteres siguientes. Pasan 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 con porcentaje, entre ellos:
- El carácter de espacio y signos de puntuación como
:/?#[]@$&+,;= - Las letras con acento y cualquier otro carácter no ASCII o Unicode
- El propio carácter
%literal, que siempre se convierte en%25, incluso si ya formaba parte de una secuencia codificada con porcentaje
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 algunos contextos. Esta herramienta concreta no los codifica, porque sigue el conjunto de reglas de encodeURIComponent, donde se consideran seguros.
Cómo calcular una cadena con codificación porcentual (fórmula)
La herramienta examina uno a uno los caracteres de la entrada y aplica esta regla:
- Si el carácter es uno de los caracteres sin cambios indicados arriba, se conserva tal cual.
- En caso contrario, se convierte el carácter en su secuencia de bytes UTF-8. La mayoría de las letras con acento de Europa occidental usan dos bytes; los caracteres de escrituras como la china o la árabe suelen usar tres.
- Se escribe cada byte como un número hexadecimal de dos dígitos.
- Se coloca un
%delante de cada par hexadecimal. - Se unen los resultados en orden para formar la cadena codificada.
Ejemplo
Entrada: Jürgen & Björk
Carácter por carácter, el proceso es el siguiente:
| 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 en acción el conjunto de caracteres sin cambios. Al codificar la cadena -_.!~*'() se obtiene -_.!~*'(), exactamente el mismo texto, porque todos sus caracteres pertenecen al conjunto de caracteres no reservados. Al codificar la cadena 100% se obtiene 100%25, porque el propio signo % no es un carácter seguro.
Decodificación de una cadena con codificación porcentual
La decodificación invierte el proceso: cada secuencia %XX se lee como un byte hexadecimal, los bytes se agrupan de nuevo en el carácter UTF-8 original y ese carácter sustituye a la secuencia. Por ejemplo, %C3%BC se decodifica de nuevo como ü, y %20 se decodifica de nuevo como un espacio. Esta herramienta solo codifica; para invertir el proceso hace falta un decodificador aparte.
Usos habituales
La codificación porcentual se usa siempre que el texto escrito por una persona, y no por un programador, debe pasar a 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 llevan nombres, direcciones u otros datos del usuario
- Enlaces a páginas con títulos en idiomas que usan letras con acento o escrituras no latinas
- Solicitudes a API que pasan 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'
5Historia
La idea de codificar los caracteres no seguros de una URL se remonta a la RFC 1738 de (4410 cm) 1994, uno de los primeros documentos que definieron el formato de las URL. La RFC 3986, publicada 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 algo más amplio que el de la RFC 3986: también deja sin codificar ! * ' ( y ), de acuerdo con una versión anterior de la especificación de los URI.
Preguntas frecuentes
¿Qué diferencia hay 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 sustituye por % seguido de dos dígitos hexadecimales.
¿Por qué !, *, ', ( y ) no cambian en esta herramienta?
Esta herramienta usa encodeURIComponent, que considera seguros esos cinco caracteres y los deja exactamente como se escribieron. Otras funciones de codificación, y algunos servidores, pueden exigir que se codifiquen, así que conviene comprobar el sistema de destino si esto causa algún problema.
¿Qué diferencia hay entre %20 y + para un espacio?
Ambos representan un espacio. %20 es la codificación porcentual general de un espacio. El signo + es un caso especial que se usa solo dentro de los datos application/x-www-form-urlencoded, el formato de los envíos de formularios HTML, y no lo usa esta herramienta.
¿Esta herramienta decodifica el texto ya codificado?
No. Solo codifica. Si la entrada ya contiene un signo %, ese % se trata como un carácter literal y en la salida se convierte en %25, en lugar de dejarse como estaba.
¿Cómo se tratan los caracteres no latinos, como el texto en chino o en árabe?
Primero se convierte cada carácter en su secuencia de bytes UTF-8 y después se codifica con porcentaje cada byte. La mayoría de los caracteres chinos usan tres bytes, de modo que un carácter chino produce tres grupos %XX en la salida.
¿Se debe 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, y no las que forman la estructura de la URL, como https:// y el nombre de dominio. Si se codificara una URL completa con un codificador de componentes, sus caracteres :, / y ? también se convertirían en códigos porcentuales y la dirección dejaría de funcionar.
Referencias
- Internet Engineering Task Force. RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (enero de 2005). RFC 3986 — codificación porcentual como "%" plus two hexadecimal digits; unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~".
- MDN Web Docs (Mozilla). encodeURIComponent(). MDN, encodeURIComponent() — escapa todos los caracteres excepto A–Z a–z 0–9 - _ . ! ~ * ' ( y ).
- Internet Engineering Task Force. RFC 1738: Uniform Resource Locators (URL) (diciembre de 1994). RFC 1738 — especificación temprana de las URL que define la codificación de «%» más dos dígitos hexadecimales.
- Internet Engineering Task Force. RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax (agosto de 1998). RFC 2396 — conjunto anterior de caracteres "mark" no reservados: - _ . ! ~ * ' ( y ).
- WHATWG. URL Standard. WHATWG URL Standard — application/x-www-form-urlencoded usa «+» para un espacio.