Idioma: Español

tools / url

url/

Codificar / decodificar URL, y dividir una URL completa en sus partes y en una tabla de parámetros de consulta.

Entrada

Codificado

Analizar URL

Preguntas frecuentes

¿Qué diferencia hay entre encodeURIComponent y encodeURI y cuál debo usar?

Usa encodeURIComponent para el valor de un parámetro o un único segmento de la ruta, y encodeURI para una URL completa. La primera también convierte en %XX los caracteres con significado especial como : / ? & = #, por lo que solo sirve para un fragmento de la URL; la segunda los conserva, así que la estructura de la URL se mantiene intacta, pero no toca un & o un = dentro del valor de un parámetro. Las letras, los dígitos y - _ . ! ~ * ' ( ) no los modifica ninguna de las dos.

¿Por qué un espacio se convierte en %20? ¿Y el + pasa a ser un espacio al decodificar?

Aquí la codificación escribe un espacio como %20, no como +. Al decodificar, un + en el cuadro se queda como está y no se convierte en espacio, porque decodeURIComponent no hace esa conversión; solo la tabla de parámetros de consulta de «Analizar URL» trata el + como espacio, siguiendo las reglas de los formularios. Para decodificar algo como a+b procedente de un formulario, reemplaza antes el + por un espacio a mano.

¿Qué hago ante «no es una secuencia UTF-8 válida» al decodificar?

La secuencia %XX no es UTF-8. El caso más habitual es texto en chino codificado en GBK por un sitio antiguo, como %D6%D0; igual que el decodeURIComponent del navegador, esta herramienta solo acepta UTF-8, así que informa de un error y señala dónde ocurrió. El contenido en GBK se puede convertir con una herramienta que admita GBK, por ejemplo unquote(s, encoding='gbk') de Python. El mismo error aparece cuando el texto se cortó al copiarlo, por ejemplo %E4%B8 al que le falta el último byte.

¿Qué hago ante «no va seguido de dos dígitos hexadecimales»?

El texto contiene un signo de porcentaje que nunca se codificó, como 100% o 50%off. En la codificación URL el signo de porcentaje inicia un escape y debe ir seguido de dos dígitos hexadecimales. Cambia ese % por %25 y vuelve a decodificar; el mensaje te dice de qué carácter se trata.

¿Y si después de decodificar sigue habiendo %XX?

Lo más probable es que se haya codificado dos veces; por ejemplo, %2520 se decodifica una vez como %20. Vuelve a decodificarlo: haz clic en «⇄ Usar resultado como entrada» para llevar el resultado de nuevo al cuadro de entrada y luego haz clic en «Decodificar» otra vez.

¿El resultado coincide con la codificación URL de PHP, Python o Java?

En su mayor parte, con algunas diferencias de detalle. encodeURIComponent se parece a rawurlencode de PHP y a urllib.parse.quote(s, safe='') de Python, salvo que deja sin codificar ! ' ( ) *. URLEncoder de Java y urlencode de PHP escriben un espacio como +, mientras que esta herramienta escribe %20. Al integrarte con otro sistema, guíate por las reglas de decodificación que realmente use el receptor.

¿Por qué «Analizar URL» dice que falta el protocolo o muestra algo distinto de lo que escribí?

El análisis necesita una URL completa que empiece por un protocolo como https://; un dominio o una ruta sueltos dan un error. El resultado procede del analizador de URL del propio navegador, así que está normalizado: el host se pasa a minúsculas, el puerto muestra «(puerto por defecto)» cuando se omite o es el predeterminado, los caracteres no ASCII de la ruta aparecen como %XX con una fila adicional para la ruta decodificada, y las claves y los valores de la tabla de consulta ya están decodificados.

¿Se envía a un servidor la URL que introduzco?

No. La codificación, la decodificación y el análisis se hacen en tu navegador, así que los tokens, los números de teléfono y otros parámetros de la URL nunca salen de él.