Codificar URL
Haga que un texto pueda ir dentro de una URL sin problemas, o convierta secuencias del tipo %20 de nuevo en caracteres legibles. La herramienta usa las funciones encodeURIComponent, encodeURI y decodeURIComponent de su propio navegador, muestra los parámetros de consulta en una tabla y no envía nada a ningún servidor.
0 caracteres · 0 palabras · 0 líneas
0 caracteres · 0 palabras · 0 líneas
Funciona por completo en esta pestaña del navegador. Su texto nunca se sube ni se guarda.
Qué escapa cada función
Calculado con las propias funciones del navegador. encodeURIComponent deja intactos las letras, los dígitos y estos signos: ! ' ( ) * - . _ ~
| Carácter | encodeURIComponent | encodeURI |
|---|---|---|
(espacio) | %20 | %20 |
! | ! | ! |
" | %22 | %22 |
# | %23 | # |
$ | %24 | $ |
% | %25 | %25 |
& | %26 | & |
' | ' | ' |
( | ( | ( |
) | ) | ) |
* | * | * |
+ | %2B | + |
, | %2C | , |
/ | %2F | / |
: | %3A | : |
; | %3B | ; |
= | %3D | = |
? | %3F | ? |
@ | %40 | @ |
[ | %5B | %5B |
] | %5D | %5D |
{ | %7B | %7B |
} | %7D | %7D |
| | %7C | %7C |
\ | %5C | %5C |
^ | %5E | %5E |
` | %60 | %60 |
< | %3C | %3C |
> | %3E | %3E |
~ | ~ | ~ |
- | - | - |
_ | _ | _ |
. | . | . |
é | %C3%A9 | %C3%A9 |
€ | %E2%82%AC | %E2%82%AC |
😀 | %F0%9F%98%80 | %F0%9F%98%80 |
Codificación por porcentaje y caracteres reservados de la RFC 3986
Una URL solo puede contener un conjunto limitado de caracteres ASCII. La RFC 3986, la especificación de 2005 sobre la sintaxis de los URI, los divide en dos grupos. Los caracteres no reservados, A–Z, a–z, 0–9 y los cuatro signos - . _ ~, nunca necesitan codificarse. Los caracteres reservados tienen una función: los delimitadores generales : / ? # [ ] @ separan esquema, host, ruta, consulta y fragmento, y los subdelimitadores ! $ & ' ( ) * + , ; = separan elementos dentro de ellos, como hacen & e = en una cadena de consulta. Todo lo demás, y cualquier carácter reservado usado como dato, debe codificarse por porcentaje.
La codificación por porcentaje escribe un byte como % seguido de dos dígitos hexadecimales. El texto se convierte antes a UTF-8, así que un espacio pasa a ser %20, una é (dos bytes) se convierte en %C3%A9 y un emoji en cuatro grupos %XX. Por eso una búsqueda de "café & bar" acaba en un enlace como caf%C3%A9%20%26%20bar: el & se codifica para que el servidor no lo lea como el inicio de un parámetro nuevo.
encodeURIComponent, encodeURI y la decodificación de URL
encodeURIComponent es la opción correcta para una sola pieza, como el valor de una consulta, un segmento de ruta o una URL de redirección pasada como parámetro. Escapa todo excepto los caracteres no reservados y ! ' ( ) *, que JavaScript deja intactos por razones históricas. encodeURI (URL completa) supone que la entrada ya es una dirección completa y mantiene intactos los caracteres reservados, así que en https://example.com/a b?q=1 solo se codifica el espacio. Usar encodeURI con el valor de un parámetro es un error clásico: un & o un # dentro del valor sobreviviría y rompería la URL.
Decodificar revierte cualquiera de las dos funciones. Los formularios HTML enviados con GET usan el formato más antiguo application/x-www-form-urlencoded, en el que el espacio se escribe como + y no como %20; mantenga marcada Tratar + como espacio en esos casos y desmárquela cuando importe un signo más literal, como en un número de teléfono. Si la entrada contiene un % que no va seguido de dos dígitos hexadecimales, o bytes que no son UTF-8 válido, la decodificación falla con un mensaje claro en lugar de adivinar. Cuando el texto contiene una cadena de consulta, sus parámetros aparecen decodificados en una tabla debajo de la herramienta. Para datos binarios en URL, la alternativa habitual es Base64url.
Preguntas frecuentes
- ¿Un espacio en una URL se escribe %20 o con un signo más?
- En las rutas y según la RFC 3986, un espacio es %20. La forma + solo significa espacio dentro de cadenas de consulta codificadas como lo hacen los formularios HTML, así que %20 es la opción segura en cualquier lugar.
- ¿Por qué mi URL acabó con %2520?
- Se codificó dos veces. La primera pasada convirtió un espacio en %20 y la segunda codificó el propio % como %25. Decodifique una vez para deshacer la capa sobrante y codifique los valores en un único punto de su código.
- ¿Qué caracteres nunca necesitan codificación por porcentaje en una URL?
- El conjunto no reservado de la RFC 3986: las letras de la A a la Z en mayúsculas y minúsculas, los dígitos del 0 al 9 y el guion, el punto, el guion bajo y la tilde (~).
- ¿Una URL puede contener letras con tilde o ñ sin codificar?
- Los navegadores las muestran, pero en la transmisión todo carácter no ASCII de una ruta o una consulta se envía como UTF-8 codificado por porcentaje. Los nombres de dominio usan un sistema aparte, Punycode, que los convierte en etiquetas xn--.
- ¿Por qué la decodificación de URL indica una secuencia mal formada?
- El texto tiene un % que no va seguido de dos dígitos hexadecimales, como un "100%" literal, o los bytes se decodifican como UTF-8 no válido. Codifique los signos % sueltos como %25 antes de decodificar.