URLs podem conter apenas um conjunto limitado de caracteres ASCII, portanto, qualquer outra coisa – espaços, acentos, emoji ou separadores reservados que estruturam uma URL – deve ser codificada em porcentagem. Esta ferramenta codifica e decodifica essa representação inteiramente no seu navegador. Este guia explica quando recorrer à codificação de componente versus URL completo, por que um espaço às vezes é + e às vezes% 20 e como ler um erro de decodificação.
Quando usar encodeURIComponent vs encodeURI
As duas funções diferem apenas nos personagens que protegem. codificarURIComponent escapa tudo, exceto o conjunto não reservado (letras, dígitos e - _ . ! ~ * ' ( )), então separadores reservados como / ? & = # são transformados em %2F %3F %26 %3D %23. Isso é exatamente o que você deseja para um único dado — um valor de consulta, um segmento de caminho — porque garante que o valor não possa ser mal interpretado como uma estrutura.
codificarURI destina-se a um URL inteiro. Ele deixa os caracteres reservados que delimitam um URL intactos, então https://x.com/a?b=c permanece utilizável. A compensação: não protegerá um valor que contenha um / ou &. Regra prática: primeiro codifique cada valor com o modo de componente e depois monte o URL; use o modo de URL completo apenas quando tiver um URL finalizado que contenha apenas um espaço ou acento perdido.
Caracteres reservados e a confusão + vs% 20
RFC 3986 os chama de caracteres reservados: : / ? #[ ]@ ! $ & ' ( ) * + , ; =. Dados internos devem ser escapados; como delimitadores, eles não devem ser. A fonte mais comum de bugs é o espaço. A codificação percentual moderna sempre escreve um espaço como %20. Mas o formato application/x-www-form-urlencoded mais antigo — o que um navegador produz quando envia um formulário HTML — codifica um espaço na string de consulta como +. Portanto, ?q=a+b e ?q=a%20b podem significar "a b". Ao decodificar uma string no estilo de formulário, ative Tratar + como espaço; ao decodificar um caminho ou um URL de API moderno, deixe-o desativado para que um + literal permaneça um +.
Por que a decodificação falha e a codificação dupla
A decodificação gera um erro de URI malformado quando um % não é seguido por exatamente dois dígitos hexadecimais (0–9 A–F). Um sinal de porcentagem literal no texto fonte, como 50% off, é o culpado usual - deveria ter sido codificado como %2520… não, como 50%25 off, onde %25 é a porcentagem escapada. A ferramenta aponta para a posição da primeira sequência incorreta para que você possa localizá-la. O perigo oposto é a codificação dupla: se você codificar uma string que já contém %XX, os próprios sinais de porcentagem serão escapados e %20 se tornará %2520. A ferramenta detecta entradas já codificadas e avisa você para decodificar.
Privacidade: cada operação aqui é executada localmente com codificarURIComponent, codificarURI, decodificarURIComponent e decodificarURI nativos do navegador. Nada do que você cola (tokens, strings de consulta, dados pessoais) é enviado a um servidor.