O que é a codificação de URL
Um endereço da web só pode ter um pequeno conjunto de caracteres: letras, dígitos e alguns símbolos como -, ., _ e ~. Outros caracteres têm funções especiais. O ? inicia a query string, o & separa os parâmetros, o = liga um nome a um valor e o # inicia um fragmento. Espaços e letras fora do alfabeto inglês, como á, ã e ç, não são permitidos.
A codificação de URL, também chamada de codificação percentual (URL encode ou percent encoding), resolve isso. Cada caractere inseguro é transformado em bytes UTF-8, e cada byte é escrito como % seguido de dois dígitos hex. Um espaço vira %20, o & vira %26 e o é vira %C3%A9.
Como usar o codificador de URL
Codificar. Digite ou cole um texto em Texto comum. A versão codificada aparece em Codificado para URL. Clique em Copiar para pegá-la.
Decodificar. Cole o texto codificado em Codificado para URL. O texto legível aparece à esquerda.
Escolha o que você está codificando no menu abaixo das caixas:
- Um valor ou parte de uma URL (encodeURIComponent) é a escolha certa na maioria das vezes. Ela codifica tudo, menos letras, dígitos e
- _ . ~. Use para termos de busca, valores de parâmetros e trechos de caminho. - Uma URL inteira, mantendo : / ? & = (encodeURI) deixa a estrutura do endereço em paz e só codifica espaços, letras fora do alfabeto inglês e caracteres parecidos.
- Dados de formulário, espaços como + (x-www-form-urlencoded) corresponde ao que o navegador envia quando você submete um formulário HTML. Os espaços viram
+, e na decodificação o+volta a ser espaço.
Limpar esvazia as duas caixas.
Como funciona
O texto é primeiro transformado em bytes UTF-8. Cada byte que não é permitido é trocado por % e o valor dele em hexadecimal. A letra é ocupa dois bytes em UTF-8, então vira dois escapes: %C3%A9. Um emoji ocupa quatro bytes, então vira quatro escapes. Em português, isso acontece com todas as letras acentuadas e com o ç: “ação” vira a%C3%A7%C3%A3o.
No modo de componente, esta ferramenta vai um passo além da função simples do navegador. Ela também codifica ! ' ( ) *, seguindo a RFC 3986. Esses caracteres são tecnicamente permitidos, mas já causaram problemas em alguns servidores e programas de e-mail.
A decodificação funciona ao contrário. Sequências de %XX são reunidas em bytes e lidas como UTF-8.
Exemplos
| Entrada | Componente | URL inteira | Formulário |
|---|---|---|---|
hello world |
hello%20world |
hello%20world |
hello+world |
Tom & Jerry |
Tom%20%26%20Jerry |
Tom%20&%20Jerry |
Tom+%26+Jerry |
a+b=c |
a%2Bb%3Dc |
a+b=c |
a%2Bb%3Dc |
50% off |
50%25%20off |
50%25%20off |
50%25+off |
café |
caf%C3%A9 |
caf%C3%A9 |
caf%C3%A9 |
it's (ok)*! |
it%27s%20%28ok%29%2A%21 |
it's%20(ok)*! |
it%27s+%28ok%29%2A%21 |
ação & café |
a%C3%A7%C3%A3o%20%26%20caf%C3%A9 |
a%C3%A7%C3%A3o%20&%20caf%C3%A9 |
a%C3%A7%C3%A3o+%26+caf%C3%A9 |
pão de queijo |
p%C3%A3o%20de%20queijo |
p%C3%A3o%20de%20queijo |
p%C3%A3o+de+queijo |
Um endereço completo mostra melhor a diferença. https://example.com/a b?q=1&r=é no modo de URL inteira vira https://example.com/a%20b?q=1&r=%C3%A9, que continua funcionando como link. No modo de componente, o mesmo texto vira https%3A%2F%2Fexample.com%2Fa%20b%3Fq%3D1%26r%3D%C3%A9, o que só está certo quando o endereço inteiro é, ele mesmo, o valor de um parâmetro, como o destino de um redirecionamento.
Dicas e limites
- Codifique os valores, não os links inteiros. Monte o link primeiro e depois codifique só as partes que você insere.
- Cuidado com a codificação dupla. Se você vir
%2520, o texto foi codificado duas vezes. Decodifique uma vez. - O + nem sempre é espaço. Ele só significa espaço em dados de formulário. Em um caminho, o
+é um sinal de mais comum. Escolha o modo certo antes de decodificar. - Codificar não é esconder. Qualquer pessoa consegue ler um texto codificado. Não coloque senhas em links.
- Maiúsculas e minúsculas não importam nos escapes.
%c3%a9e%C3%A9significam a mesma coisa. Maiúsculas são o estilo mais comum. - Endereços com acento. Para páginas do seu próprio site, prefira slugs sem acento a URLs cheias de
%C3. O gerador de slug cuida disso.
Outras formas de fazer isso
JavaScript. encodeURIComponent('Tom & Jerry') devolve Tom%20%26%20Jerry. Use decodeURIComponent para desfazer. Repare que ela gera um erro com uma sequência quebrada como %zz, enquanto esta ferramenta deixa a sequência no lugar.
Python. urllib.parse.quote('Tom & Jerry', safe='') devolve Tom%20%26%20Jerry, e urllib.parse.quote_plus devolve Tom+%26+Jerry.
Excel. =CODIFURL(A1) faz a codificação percentual do texto da célula A1 (=ENCODEURL(A1) no Excel em inglês; Excel 2013 ou mais recente no Windows).
Linha de comando. curl --data-urlencode "q=Tom & Jerry" codifica um valor de formulário enquanto o envia.
Ferramentas relacionadas
Montando links de campanha? O gerador de UTM codifica cada parâmetro para você. Para transformar um título em um caminho limpo, use o gerador de slug. Para dados binários dentro de uma URL, a codificação Base64 com a opção segura para URL costuma ser uma escolha melhor.