Codificador de URL
Codifique percentualmente caracteres especiais em URLs ou componentes URI individuais para que sejam seguros para transmissão em requisições HTTP, strings de consulta e dados de formulários. Segue o RFC 3986.
Um caractere de espaço em uma string de consulta de URL quebra silenciosamente a requisição. O RFC 3986 (Identificador de Recurso Uniforme: Sintaxe Genérica) define quais caracteres são seguros em uma URL e quais devem ser percent-encoded. O percent-encoding substitui cada byte inseguro por % seguido por dois dígitos hexadecimais maiúsculos. Este codificador baseado em navegador aplica o RFC 3986 instantaneamente, sem transmitir seus dados para lugar algum. Use-o para codificar URLs completas ou valores individuais de parâmetros de consulta e obtenha uma saída compatível com os padrões toda vez.
Como Codificar uma URL
- Cole a URL ou texto no campo de entrada.
- Escolha o modo URL Completa para codificar apenas caracteres inseguros, ou o modo Componente para codificar todos os caracteres especiais, incluindo
&e=. - A saída codificada percentualmente aparece no painel de resultados.
- Copie a string codificada para uso em sua requisição, código ou documentação.
Entendendo o Percent-Encoding
O Padrão RFC 3986
RFC 3986 (IETF, 2005) define duas categorias de caracteres em uma URI. Caracteres não reservados (A-Z a-z 0-9 - _ . ~) podem aparecer sem codificação. Caracteres reservados (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) têm significado estrutural especial e podem ou não precisar de codificação dependendo do contexto. Todos os outros caracteres - incluindo espaços, Unicode não-ASCII e caracteres fora desses conjuntos - devem ser percent-encoded.
encodeURI vs encodeURIComponent
JavaScript fornece duas funções de codificação. encodeURI() codifica uma URL completa e deixa os caracteres reservados intactos porque eles desempenham papéis estruturais. encodeURIComponent() também codifica caracteres estruturais, tratando-os como dados literais - é projetado para nomes e valores de parâmetros de consulta individuais onde & e = quebrariam a sintaxe da URL. O modo URL Completa desta ferramenta corresponde a encodeURI; o modo Componente corresponde a encodeURIComponent.
Exemplo
Entrada
Hello World! @2024
Saída (modo Componente)
Hello%20World!%20%402024
O espaço é codificado como %20 (padrão RFC 3986); @ se torna %40. O ponto de exclamação é um caractere não reservado em alguns contextos e pode ou não ser codificado dependendo do modo.
Casos de Uso Comuns
- Valores de parâmetros de consulta - Codifique valores contendo
&,=ou+antes de anexá-los a uma URL - Consultas de mecanismos de busca - Codifique a entrada de pesquisa do usuário antes de construir uma URL de redirecionamento
- Construção de requisições API - Codifique segmentos de caminho contendo barras, espaços ou caracteres especiais
- Parâmetros OAuth - Strings base de assinatura OAuth 1.0 requerem percent-encoding conforme RFC 5849
Erros Comuns
- Codificação dupla - Se um valor já está percent-encoded, codificá-lo novamente codifica o
%em si, produzindo%2520em vez de%20 - Usar o modo URL Completa para valores de parâmetros - O modo URL Completa deixa
&e=não codificados, quebrando a sintaxe da string de consulta; use o modo Componente para valores de parâmetros - Esquecer caracteres não-ASCII - Texto não-ASCII deve ser convertido em bytes UTF-8 primeiro, depois cada byte percent-encoded separadamente
Para reverter o processo, use o Decodificador de URL. Para dados binários transportados em parâmetros de consulta de URL, primeiro codifique com o Codificador Base64 em modo seguro para URL, então a saída já estará segura para URL sem codificação adicional.
Perguntas Frequentes
Qual é a diferença entre codificação de URL e codificação Base64?
O percent-encoding substitui caracteres inseguros por sequências hexadecimais %XX, mantendo os caracteres seguros inalterados, assim o comprimento da saída é semelhante ao da entrada. O Base64 converte todos os dados em um alfabeto de 64 caracteres, aumentando o tamanho em 33%, mas garantindo que o resultado contenha apenas caracteres ASCII seguros. O percent-encoding torna caracteres específicos seguros para URL; o Base64 codifica dados binários arbitrários como texto.
Quando devo usar encodeURI vs encodeURIComponent em JavaScript?
encodeURI() é para codificar uma URL completa - preserva caracteres estruturais como : / ? # & =. encodeURIComponent() é para codificar valores individuais dentro de uma URL - codifica caracteres estruturais para que sejam tratados como dados literais em vez de sintaxe de URL. Quando em dúvida, use encodeURIComponent() para qualquer entrada fornecida pelo usuário.Por que um espaço se torna %20 em alguns codificadores, mas + em outros?
%20 é a codificação percent-encoding do RFC 3986 para um espaço e é correta para segmentos de caminho URI e valores de consulta. O sinal + representando um espaço é específico para application/x-www-form-urlencoded (envios de formulários HTML), que precede o RFC 3986. Ambos são válidos em seus respectivos contextos, mas %20 é o padrão universal fora de formulários HTML.A codificação de URL funciona para caracteres não-ASCII?
Sim. Caracteres não-ASCII são primeiro convertidos em bytes UTF-8, e então cada byte é percent-encoded separadamente. O caractere ş (U+015F) se torna %C5%9F. O caractere chinês 中 (U+4E2D) se torna %E4%B8%AD. Navegadores e servidores modernos esperam codificação UTF-8 para caracteres não-ASCII em URLs.
Os dados da minha URL são enviados para seus servidores quando uso esta ferramenta?
Não. Toda a codificação usa encodeURI() ou encodeURIComponent() executando localmente em seu navegador. URLs, parâmetros de consulta, tokens de autenticação e quaisquer outros dados que você colar nunca são transmitidos para nossos servidores.