Codificador de URL
Codifique texto em porcentagem para que ele trafegue com segurança em uma URL, inteiramente no seu navegador.
Roda inteiramente no seu navegador. Nada é enviado, registrado ou armazenado.
Uma URL tem gramática, e os caracteres que pertencem a ela — "?", "&", "/", "#", espaços — precisam ser escapados quando fazem parte de um valor em vez da estrutura. Esse escape é a codificação por porcentagem.
Como funciona
Todo caractere fora do conjunto não reservado da RFC 3986 — letras, dígitos, "-", ".", "_" e "~" — é substituído por um sinal de porcentagem e o valor hexadecimal de cada um dos seus bytes UTF-8. Um espaço vira %20 e uma letra acentuada vira dois escapes, porque são dois bytes em UTF-8.
O estilo de dados de formulário existe porque o envio de formulários HTML é anterior a essa regra: nele, um espaço é "+" e o "~" também é escapado. Escolha esse estilo quando estiver montando um corpo application/x-www-form-urlencoded, e o estilo de componente para todo o resto.
Exemplos
| Caso | Entrada | Resultado |
|---|---|---|
| Uma expressão de busca indo para uma query string | coffee & cake | coffee%20%26%20cake |
| A mesma expressão como dados de formulário | coffee & cake | coffee+%26+cake |
Perguntas frequentes
Devo codificar uma URL inteira com isto?
Não. Codificar uma URL completa escapa também o "://" e os separadores, e deixa você com uma string que nenhum cliente consegue seguir. Codifique os valores individuais e depois monte a URL com eles.
Por que "!" é codificado aqui e o console do meu navegador não mexe nele?
O encodeURIComponent do JavaScript deliberadamente deixa de fora "!", "'", "(", ")" e "*", embora a RFC 3986 os reserve. Codificá-los é sempre aceito e evita surpresas em parsers mais rigorosos, então esta ferramenta codifica.
E o "#" em um fragmento?
Um "#" literal dentro de um valor precisa ser codificado como %23; caso contrário, tudo depois dele é lido como fragmento e nunca chega ao servidor.
Bom saber
- Tudo acontece no seu navegador. O que você cola não é enviado, não é registrado e não é armazenado.
Fontes
Todas as ferramentas de Código