MiServe DevTools

Os seus autocolantes

Fixe aqui as ferramentas. Ficam guardadas neste navegador.

Codificador / descodificador e analisador de URL

Aplique ou reverta o percent-encoding de um valor, de um URL completo ou de dados de formulário, e veja qualquer URL dividido nas suas partes e parâmetros de query.

Funciona no seu navegador. Nada do que cola é enviado.

Sobre esta ferramenta

O que é o percent-encoding

Um URL só pode conter um conjunto limitado de caracteres ASCII, e alguns deles têm uma função: ? inicia a query, & separa os parâmetros, # inicia o fragmento. Qualquer outro carácter, e qualquer carácter reservado usado como simples dado, é escrito como um sinal de percentagem seguido de dois dígitos hexadecimais por cada um dos seus bytes. Um espaço passa a %20, e é, que em UTF-8 ocupa dois bytes, passa a %C3%A9. As regras estão no RFC 3986.

A descodificação faz o inverso. Falha quando um sinal de percentagem não é seguido de dois dígitos hexadecimais, ou quando os bytes escapados não são UTF-8 válido; a ferramenta indica a sequência e onde está.

Que modo usar

Componente é o modo certo para uma única parte de um URL: um valor de query, um segmento de caminho, um URL de redirecionamento passado como parâmetro. Escapa /, ?, & e =, para que o valor não possa ser confundido com a estrutura.

URL completo serve para um endereço completo em que só é preciso corrigir os espaços e os caracteres não ASCII. Deixa intactos os caracteres estruturais, o que também significa que não consegue proteger um valor que os contenha. Escapa também o %, por isso aplicá-lo a um URL já codificado codifica-o duas vezes, e escapa os parênteses retos à volta de um endereço IPv6 no host. Ao descodificar, este modo deixa como estão as sequências de escape dos caracteres estruturais, como %2F e %26.

Formulário é o formato application/x-www-form-urlencoded que os navegadores usam quando submetem um formulário HTML, na query string ou no corpo do pedido, e em que um espaço se escreve +. Ao descodificar, um + só é lido como espaço neste modo.

Como o URL é analisado

Quando a entrada, ou na falta dela a saída, é um URL absoluto, a ferramenta lê-o com o próprio parser URL do navegador, o mesmo que trata os links e o fetch. A tabela lista o esquema, as credenciais, o host, a porta, o caminho e o fragmento, e cada parâmetro da query com a chave e o valor descodificados. O parser normaliza o que lê. Num URL web, por exemplo, passa o esquema e o host a minúsculas, resolve os segmentos . e .. do caminho e aplica percent-encoding a caracteres como os espaços, por isso as partes podem diferir ligeiramente do que foi escrito. Um nome de host internacionalizado num URL http ou https aparece na forma ASCII (Punycode), tal como o parser o guarda.

Se o URL não indicar uma porta e a ferramenta souber qual é a predefinida para o esquema, mostra essa porta, por exemplo 443 para https.

Perguntas

Qual é a diferença entre encodeURI e encodeURIComponent?

O encodeURI destina-se a um URL completo e deixa intactos caracteres como : / ? # & e =. O encodeURIComponent destina-se a um valor dentro de um URL e escapa também esses caracteres. Use o encodeURIComponent para valores de query; caso contrário, um & ou um = dentro do valor estraga a query string.

Um espaço deve ser codificado como %20 ou como +?

%20 é válido em qualquer parte de um URL. O sinal + só significa espaço em dados application/x-www-form-urlencoded, o formato em que um formulário HTML envia os campos na query string ou no corpo do pedido. Num caminho, + é um sinal de mais literal.

Porque é que dá erro ao descodificar um valor que contém um sinal de percentagem?

Um sinal de percentagem inicia sempre uma sequência de escape, por isso um sinal literal tem de ser escrito como %25. Um texto como «100% free» não é uma entrada válida em percent-encoding, porque o sinal de percentagem não é seguido de dois dígitos hexadecimais.

O URL que colo é enviado para um servidor?

Não. A codificação, a descodificação e a análise são feitas por JavaScript no separador do seu navegador. A ferramenta não faz nenhum pedido de rede com o que escreve.

Mais ferramentas de Codificação