RevealTheme logo

Codificador e Decodificador de URL

Converta texto para codificação segura para URL (codificação por porcentagem) e o inverso. Útil para query strings, redirecionamentos e fluxos OAuth.

O que é a codificação de URL e quando você precisa dela?

A codificação de URL (também chamada de 'codificação por porcentagem', especificada na RFC 3986) é o processo de converter caracteres que têm um significado especial nas URLs —ou caracteres que simplesmente não são seguros em URLs— em uma sequência de escape hexadecimal '%XX'. A especificação de URL reserva certos caracteres com significado estrutural: '?' inicia a query string, '#' inicia o fragmento, '&' separa os parâmetros de consulta, '/' separa os segmentos de caminho, etc. Se a entrada do usuário contiver algum desses caracteres e você o incorporar como está em uma URL, o analisador o interpreta de forma incorreta. A codificação de URL evita isso substituindo cada caractere reservado ou inseguro por sua representação hexadecimal em bytes precedida de '%'. Um espaço vira %20, '&' vira %26, '=' vira %3D. Os caracteres não ASCII (cirílico, chinês, emoji) viram sequências UTF-8 de vários bytes, com cada byte codificado por porcentagem. Os navegadores fazem isso automaticamente quando você clica em um link, mas sempre que você construir uma URL por meio de código —ao criar uma consulta de busca, um destino de redirecionamento, um callback OAuth ou uma assinatura de webhook— você deve codificar primeiro os valores fornecidos pelo usuário. Esta ferramenta usa as mesmas funções encodeURIComponent / decodeURIComponent que o seu código JavaScript usaria, então o comportamento corresponde exatamente ao de produção.

Casos de uso comuns

  • Codifique os termos de busca do usuário antes de anexá-los a uma URL de busca (?q=entrada+do+usuário).

  • Passe com segurança um parâmetro redirect_uri do OAuth a um servidor de autorização.

  • Construa URLs de webhook que incluam cargas úteis JSON codificadas na string de consulta.

  • Codifique uma URL 'returnTo' para que ela sobreviva ao ser passada por outras URLs.

  • Decodifique os valores codificados que você vê na barra de endereços do navegador após o envio de um formulário.

  • Teste como uma URL malformada é analisada: codifique um caractere especial e veja o que acontece.

Perguntas frequentes

Quando devo codificar uma URL?
Codifique sempre os valores fornecidos pelo usuário antes de colocá-los em uma URL: parâmetros de consulta, segmentos de caminho ou fragmentos. Não codificar é uma das fontes mais comuns de erros sutis: o valor 'gatos & cachorros' quebra uma query string até ser codificado como 'gatos%20%26%20cachorros'.
Qual é a diferença entre encodeURI e encodeURIComponent?
encodeURI é para URLs completas: deixa intactos os caracteres estruturais como '/', '?', '&', '=' porque eles têm significado em uma URL. encodeURIComponent é para partes de URL (valores de consulta, segmentos de caminho): codifica tudo o que não for alfanumérico. Use encodeURIComponent nos valores de consulta individuais; nunca use encodeURI em um valor de consulta fornecido pelo usuário (ele não escapará '&' e quebrará sua query string).
O que é Base64 seguro para URL em comparação com a codificação de URL?
São conceitos distintos. A codificação de URL (esta ferramenta) substitui caractere por caractere os caracteres especiais. O Base64 seguro para URL é uma variante do Base64 que usa '-' e '_' no lugar de '+' e '/', de modo que o resultado já é seguro para URL sem codificação adicional.
Por que às vezes '+' é decodificado como espaço?
Em application/x-www-form-urlencoded (envios de formulário), '+' é a abreviação de um espaço. A maioria dos decodificadores preserva isso. Na análise de URI moderna, '%20' é a codificação correta do espaço. decodeURIComponent trata '+' como um '+' literal; use decodeURI ou um decodificador de formulários para converter '+' em espaço.
Como os caracteres não ASCII são codificados?
Primeiro são convertidos em bytes UTF-8 e depois cada byte é codificado por porcentagem. Assim, 'café' vira 'caf%C3%A9': 'é' são dois bytes UTF-8 (0xC3 0xA9). Esta ferramenta lida com UTF-8 corretamente; algumas ferramentas antigas codificam usando Latin-1, o que produz uma saída diferente.
A codificação de URL é a mesma coisa que a codificação de entidades HTML?
Não. A codificação de URL (%XX) escapa caracteres para as URLs. A codificação de entidades HTML (&, <) escapa caracteres para a marcação HTML. Os contextos são diferentes; codificar um no contexto do outro é um erro comum de XSS.

Ferramentas relacionadas