Saltar al contenido
Quaestio

Codificador de URL

Codifica texto que tiene que ir en una dirección web, o convierte una dirección codificada en texto legible.

0 caracteres · 0 bytes

Resultado

Escribe algo en el campo de arriba.

Como un solo componente, también se codifican las barras y los signos de interrogación. Sin la casilla marcada, la estructura de la dirección se conserva y solo se escapan los caracteres no permitidos.

Insertar

Inserta esta herramienta en tu web

Copia el código y pégalo donde quieras que aparezca la herramienta, por ejemplo en una entrada de blog o en la página de un colegio. Es gratis, el recuadro no tiene anuncios y la herramienta calcula en el navegador de quien la usa.

Cómo funciona

Las direcciones web solo pueden contener un conjunto limitado de caracteres. Todo lo demás se escribe como un signo de porcentaje seguido del valor del carácter en hexadecimal, por eso un espacio se convierte en %20.

La diferencia entre los dos modos es qué se considera estructura. Al codificar un solo componente también se codifican las barras, los signos de interrogación y los signos igual, porque de lo contrario se leerían como partes de la dirección.

Al codificar una dirección completa, esos caracteres se dejan tal cual para que la estructura se conserve. Usa ese modo con una dirección terminada que solo contiene algunos caracteres que hay que escapar.

Si eliges el modo equivocado para un parámetro, el receptor puede leer un valor como varios. Un valor que va detrás de un signo igual casi siempre debe codificarse como un solo componente.

El signo más es una trampa: en la parte de la consulta de una dirección significa históricamente un espacio, mientras que en la ruta significa un signo más de verdad.

Las funciones detrás de los modos

El modo de un solo componente usa encodeURIComponent y decodeURIComponent de JavaScript, y el de dirección completa, encodeURI y decodeURI, las cuatro definidas en la norma ECMAScript. Cada carácter que hay que codificar se convierte primero a UTF-8, y cada byte se escribe como un signo de porcentaje y dos cifras hexadecimales. Como componente, jamón & queso 5 € pasa a ser jam%C3%B3n%20%26%20queso%205%20%E2%82%AC. Como dirección completa, el signo & se queda: jam%C3%B3n%20&%20queso%205%20%E2%82%AC. Un carácter que no se puede escribir en UTF-8, como la mitad suelta de un par sustituto que deja una copia rota, da un mensaje de error en lugar de un resultado.

Caracteres que nunca se codifican

ECMAScript deja sin codificar en los dos modos las letras A–Z y a–z, las cifras, el guion bajo, el guion, el punto, el signo de exclamación, la virgulilla (~), el asterisco, el apóstrofo y los paréntesis. El RFC 3986 solo considera no reservados el guion, el punto, el guion bajo y la virgulilla; el signo de exclamación, el apóstrofo, los paréntesis y el asterisco pertenecen a los delimitadores reservados y pueden tener significado en algunas direcciones.

El modo de dirección completa deja además intactos el punto y coma, la barra, el signo de interrogación, los dos puntos, la arroba, el signo &, el signo igual, el signo más, el dólar, la coma y la almohadilla. Los corchetes, en cambio, se codifican, así que una dirección IPv6 en una URL, como http://[::1]:8080/, pasa a ser http://%5B::1%5D:8080/.

Signos más y formularios

Los formularios se codifican como application/x-www-form-urlencoded, donde el URL Standard del WHATWG escribe el espacio como un signo más y codifica además el signo de exclamación, el apóstrofo, los paréntesis y la virgulilla. La herramienta escribe siempre %20, y al decodificar no convierte un signo más en espacio: a+b se queda como a+b. Si el texto viene de un formulario, cambia antes los signos más por espacios.

Errores al decodificar

Decodificar exige UTF-8 válido. %F3, que es la ó en la antigua codificación Latin-1, da el mensaje de error, mientras que %C3%B3 da ó. Un signo de porcentaje que no va seguido de dos cifras hexadecimales, como en %zz o al final del texto, también es un error. En el modo de dirección completa, los delimitadores codificados se dejan como están: a%2Fb se queda como a%2Fb, porque una barra decodificada cambiaría la estructura de la dirección.

Fuentes

Cómo se comprueban las herramientas