Pular para o conteúdo principal
PulsarKit

Codificar e decodificar URL

Codifique texto com % para uma URL ou decodifique de volta, com os três esquemas que de fato diferem e listas tratadas linha por linha.

Solte seus arquivos aqui

.txt · até 5 MB

Como codificar e decodificar uma URL

  1. 1

    Cole o texto ou uma lista de URLs

    Um valor ou cinquenta, um por linha. Um arquivo .txt também serve, e tanto UTF-8 quanto Windows-1251 são lidos.

  2. 2

    Escolha codificar ou decodificar e um esquema

    Component para um valor isolado, URI completa para um endereço inteiro, form-urlencoded para o corpo de um POST.

  3. 3

    Copie o resultado

    Copie direto ou baixe como arquivo de texto; nos dois casos, a estrutura de linhas é mantida.

Três esquemas, e por que escolher errado quebra os links

A codificação component escapa tudo o que não está entre os caracteres “não reservados”, inclusive : / ? # & =. Isso é certo para um valor isolado que vai para uma query string e errado para um endereço inteiro: codifique https://example.com/a?b=1 como component, e cada caractere estrutural vira uma sequência com %, deixando uma string que já não é uma URL. A codificação de URI completa deixa esses caracteres estruturais como estão e só escapa espaços e caracteres não ASCII, que é o que você quer quando a entrada já é um endereço completo. Form-urlencoded é a codificação component com uma substituição a mais: os espaços viram sinais de mais, como exige o formato em que os formulários HTML enviam dados.

O sinal de mais é ambíguo de verdade

Em um corpo form-urlencoded, + significa espaço. Em um segmento de caminho, + é um sinal de mais literal. A decodificação não consegue distinguir os dois só pela string, por isso essa escolha é uma configuração, e não um palpite: escolha form-urlencoded ou ative a opção de tratar + como espaço, e os sinais de mais viram espaços; deixe a opção desativada, e eles ficam. A codificação tem uma armadilha parecida no sentido contrário: um + literal na entrada precisa virar %2B antes de os espaços virarem sinais de mais, senão uma ida e volta pelo codificador transforma esse + em espaço sem avisar. Aqui essa ordem é fixa, então codificar e depois decodificar sempre devolve exatamente o que você tinha no começo.

Escapes quebrados, apontados com precisão

Um % solto, sem dois dígitos hexadecimais depois, ou uma sequência multibyte cortada no meio, como %E0%A4, torna a string impossível de decodificar, e o próprio decodificador do navegador lança uma exceção sem dizer onde. O modo estrito informa a linha e a posição do primeiro problema, para você achá-lo em uma lista longa. O modo tolerante trata um % sem par como um sinal de porcentagem literal e devolve o resto, que costuma ser o que você quer quando a entrada é uma linha de log, e não uma URL de verdade. Trabalhar linha por linha importa pelo mesmo motivo: em uma lista de cinquenta, um único item com problema mostra qual deles foi.

O texto fica nesta aba

A conversão usa as funções de codificação embutidas no navegador e roda inteiramente no seu dispositivo. Query strings costumam levar tokens e identificadores, então vale dizer com todas as letras: nada é enviado, registrado ou guardado.

Perguntas frequentes

Qual a diferença entre encodeURI e encodeURIComponent?

O encodeURIComponent também escapa os caracteres estruturais : / ? # & =, o que é certo para um valor isolado dentro de uma query string. O encodeURI os deixa intactos, o que é certo quando a entrada é um endereço completo que você só precisa tornar seguro.

Por que o + às vezes significa espaço?

Porque o formato form-urlencoded, usado no envio de formulários HTML, define assim. No resto de uma URL, + é um sinal de mais literal. Como a string sozinha não diz qual caso vale, a decodificação oferece isso como uma escolha explícita.

O que fazer com um erro de codificação percentual inválida?

A mensagem mostra a linha e a posição do primeiro escape quebrado, em geral um % solto que deveria ser %25 ou uma sequência multibyte truncada. Corrija o trecho ou passe para a decodificação tolerante para recuperar o resto do texto.

Funciona com uma lista de URLs?

Sim, e esse é o padrão. Cada linha é convertida de forma independente, linhas vazias continuam vazias e as quebras de linha nunca são escapadas: entra uma lista, sai uma lista.

As quebras de linha são mantidas?

No modo linha por linha, sim, inclusive uma quebra de linha no final. Desative esse modo, e a entrada inteira passa a ser tratada como um único valor, então as quebras de linha dela viram %0A dentro do resultado.

Como decodificar letras cirílicas em um endereço?

Cole o endereço e decodifique com o esquema component. UTF-8 com codificação percentual, como %D0%BF%D1%80%D0%B8, volta a ser as letras originais; a ida e volta é sem perdas nos dois sentidos.

Meu texto é enviado para algum lugar?

Não. Tanto a codificação quanto a decodificação usam funções embutidas no seu navegador, rodam localmente nesta aba e não envolvem servidor nem armazenamento.

Ferramentas relacionadas