Decodificador de URL Online
A string codificada neste exemplo e decodificada para: https://example.com/search?q=cafe & resumo&page=1. A decodificação percentual é o inversó da codificação percentual: cada sequencia %XX e convertida de volta para seu caractere. Sequencias multibyte UTF-8 como %C3%A9 são decodificadas para seu caractere Unicode (e). Use isto ao ler logs de servidor, depurar redirecionamentos ou inspecionar URLs de rastreamento.
Onde Você Encontra URLs Codificadas
Logs de acessó do servidor
Servidores web registram a URI de requisição original incluindo qualquer codificação. Um usuario pesquisando por “cafe” gera uma linha de log como:
GET /search?q=cafe%20&%20resumo HTTP/1.1
Parametros de redirecionamento e rastreamento
Links de rastreamento de email e redes de anuncios aninham URLs inteiras dentro de parametros de consulta. A URL interna e codificada percentualmente, as vezes varias vezes:
https://click.example.com/track?url=https%3A%2F%2Ftarget.com%2Fpath%3Futm_source%3Demail
Decodificação em Codigo
JavaScript
decodeURI("https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dcafe")
// → "https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dcafe"
decodeURIComponent("https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dcafe")
// → "https://example.com/search?q=cafe"
const params = new URLSearchParams("q=cafe%20%26%20resumo");
params.get("q"); // → "cafe & resumo"
Python
from urllib.parse import unquote, unquote_plus
unquote("cafe%20%26%20resumo") # → "cafe & resumo"
unquote_plus("cafe+latte") # → "cafe latte"
from urllib.parse import parse_qs
parse_qs("q=cafe%20%26%20resumo") # → {"q": ["cafe & resumo"]}
Linha de comando
python3 -c "from urllib.parse import unquote; print(unquote('cafe%20%26%20resumo'))"
node -e "console.log(decodeURIComponent('cafe%20%26%20resumo'))"
URLs Duplamente Codificadas
A dupla codificação acontece quando uma string ja codificada e codificada novamente. O sinal de porcentagem % codifica para %25, transformando %20 em %2520.
Original: ola mundo
Codificada uma vez: ola%20mundo
Codificada duas vezes: ola%2520mundo
Para recuperar o valor original, aplique o decodificador duas vezes.
Codificação de Caminho vs String de Consulta
A especificação RFC 3986 trata diferentes partes de uma URL de forma diferente:
| Componente | Delimitadores estruturais | Codificação tipica |
|---|---|---|
| Caminho | / separa segmentos | Codifique barras de dados como %2F |
| String de consulta | & separa pares, = separa chave/valor | Codifique & e = de dados como %26 e %3D |
| Fragmento | # inicia o fragmento | Codifique # como %23 |
O caractere de espaco tem duas codificações em strings de consulta: %20 (codificação percentual estrita segundo RFC 3986) e + (codificação de formulario HTML). Ambos estão em usó comum. %20 e sempre seguro. + só e correto no contexto de string de consulta, nunca no caminho.
Para codificar URLs corretamente ao construi-las em código, use o Codificador de URL em vez de manipulação manual de strings.