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
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
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
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.