bitlvl
ES

Codificar / decodificar URL

Codifica texto para una URL, o decodifica escapes porcentuales de vuelta a texto. Elige el modo según adónde vaya el texto. Pega una URL completa para descomponerla en sus partes.

Los resultados y mensajes de esta herramienta se muestran en inglés.

Qué hace la codificación porcentual

Una URL solo puede contener un conjunto limitado de caracteres ASCII, y algunos de ellos (/, ?, &, =, #) tienen significado estructural. Cualquier otro byte se escribe como un signo de porcentaje y dos dígitos hex: un espacio es %20, & es %26, y los bytes UTF-8 de é son %C3%A9. El RFC 3986 fija las reglas.

Tres modos, porque el contexto importa

ModoEscapaConservaÚsalo cuando
Componente de queryTodo salvo A–Z a–z 0–9 - _ . ~Solo caracteres no reservadosUn valor va dentro de un parámetro de query o un segmento de ruta: ?q=…. Equivale a encodeURIComponent.
URL completaEspacios, no ASCII, comillas, < >…: / ? # [ ] @ & = + $ , ;Hay que sanear una URL completa sin romper su estructura. Equivale a encodeURI.
Datos de formularioComo componente, pero el espacio se convierte en +Cuerpos de formularios HTML (application/x-www-form-urlencoded), lo que la mayoría de las bibliotecas HTTP envían por defecto.

El error más común es aplicar la codificación de URL completa a un valor que contiene & o =: el servidor parte el parámetro en dos. Codifica los valores con las reglas de componente y júntalos después.

Signos más

En el cuerpo de un formulario (y por convención en el query string), + significa espacio, así que decodificar datos de formulario tiene que convertir + en espacio, mientras que un más real debe haberse enviado como %2B. En una ruta, + es simplemente un más. El interruptor Decodificar + como espacio cubre ambos casos.

Doble codificación

Si ves %2520 en una URL, algo codificó una cadena ya codificada: %20 se trató como texto y su % se convirtió en %25. Decodificar dos veces recupera el original; luego arregla el código que codificó dos veces.

Preguntas

¿Qué es %20?

Un espacio. 0x20 es el código ASCII del espacio, así que la codificación porcentual lo escribe como %20. En datos de formulario puede aparecer como + en su lugar.

¿Cuál es la diferencia entre encodeURI y encodeURIComponent?

encodeURIComponent escapa todo carácter que pueda ser estructural (incluidos /, ?, & y =) y es para valores sueltos. encodeURI los deja en paz para que una URL completa siga siendo una URL. Usa el modo componente de query para lo primero y URL completa para lo segundo.

¿Cómo se codifican las tildes y otros caracteres especiales?

Como los bytes de su forma UTF-8, cada uno escrito como %XX. é son dos bytes (%C3%A9), 日 son tres (%E6%97%A5). Los sistemas antiguos usaban a veces Latin-1, lo que da %E9 para é; los navegadores y API modernos usan UTF-8.

¿Por qué falla la decodificación de mi cadena?

O bien un % no va seguido de dos dígitos hex (un signo de porcentaje literal debe escribirse %25), o bien los bytes escapados no forman UTF-8 válido. El mensaje de error dice cuál es el caso.

¿Debo codificar la URL entera o solo los parámetros?

Solo los parámetros (y cualquier segmento de ruta que contenga texto del usuario). Construye la URL a partir de partes ya codificadas para que los delimitadores queden sin escapar.