Porque os URLs Precisam de Codificação
Um URL só pode conter um conjunto limitado de carateres ASCII. Todo o resto — espaços, tremas, emoji e carateres com significado especial como &, = e ? — tem de ser codificado por percentagem: cada byte da representação UTF-8 do carater torna-se % seguido de dois dígitos hexadecimais. Salte este passo e uma consulta de pesquisa como coffee & cream parte silenciosamente a sua string de consulta: o & inicia um novo parâmetro e metade do seu valor desaparece.
Esta ferramenta usa encodeURIComponent, a variante estrita destinada a partes individuais de um URL. coffee & cream torna-se coffee%20%26%20cream, e descodificar inverte-o exatamente.
Carateres Comuns e as Suas Codificações
| Carater | Codificado | Porque importa num URL |
|---|---|---|
| espaço | %20 | Os espaços terminam o URL em muitos contextos |
& | %26 | Separa parâmetros de consulta |
= | %3D | Separa o nome e o valor do parâmetro |
? | %3F | Inicia a string de consulta |
# | %23 | Inicia o fragmento — tudo o que vem depois é descartado dos pedidos |
/ | %2F | Separador de segmentos do caminho |
+ | %2B | Descodificado como espaço em dados de formulário se ficar em bruto |
ü | %C3%BC | Não-ASCII — dois bytes em UTF-8, duas sequências % |
encodeURI vs. encodeURIComponent
O JavaScript traz dois codificadores, e confundi-los é um erro clássico. encodeURI é para um URL completo: deixa :, /, ?, # e & intactos para que a estrutura do URL sobreviva. encodeURIComponent — o que esta ferramenta usa — é para um valor único dentro de um URL e codifica todos esses. Regra prática: a construir um parâmetro de consulta? Sempre encodeURIComponent. A codificar um URL inteiro que alguém escreveu? encodeURI. Se codificar um URL completo com a variante de componente, o https%3A%2F%2F à frente diz-lhe o que correu mal.
Armadilhas a Conhecer
- Dupla codificação: codificar duas vezes transforma
%20em%2520. Se vir sequências%25por aí, algo codificou texto já codificado. - Descodificar entrada inválida: um
%perdido não seguido de dois dígitos hexadecimais (como100% legit) falha a descodificação — a ferramenta reporta-o em vez de adivinhar. - + nem sempre é um espaço: apenas em dados de formulário
application/x-www-form-urlencoded.decodeURIComponentdeixa corretamente+como+.
Tudo corre inteiramente no seu navegador — nenhum URL que cole é alguma vez enviado para um servidor. Ferramentas relacionadas: escape texto para marcação com o codificador de HTML, ou construa caminhos de URL limpos com o gerador de slugs.