O que é URL Encoding (Percent-Encoding)?
URL encoding, também conhecido como percent-encoding, é o mecanismo de transformar caracteres especiais em uma representação segura para uso em URLs. Caracteres como espaços, acentos, cifrão, e comercial (&), e outros que têm significado especial na sintaxe HTTP precisam ser codificados para que a URL funcione corretamente.
O processo substitui cada caractere especial por um percentual seguido de dois dígitos hexadecimais. Por exemplo, um espaço vira %20, a letra "ç" vira %C3%A7, e o caractere "&" vira %26. Isso é essencial ao construir URLs dinamicamente, enviar parâmetros via query string, ou transmitir dados em formulários HTML.
Existem duas funções principais: encodeURIComponent() que codifica tudo exceto caracteres alfanuméricos e - _ . ! ~ * ' ( ), e encodeURI() que codifica apenas caracteres que não são válidos em uma URL completa. A primeira é mais usada para parâmetros individuais, a segunda para URLs inteiras.
Quando Usar Encode e Decode
- Use encode ao enviar dados via query string — parâmetros com espaços ou acentos precisam ser codificados.
- Use decode para analisar URLs recebidas de APIs ou formulários que contêm caracteres codificados.
encodeURIComponent()para valores de parâmetros;encodeURI()para URLs completas.- Nunca codifique uma URL que já foi codificada — isso causa "double encoding" com %25 no lugar de %.
- Em formulários HTML, o atributo
enctype="application/x-www-form-urlencoded"faz a codificação automaticamente. - Para caracteres como +, lembre que no formulário + representa espaço, mas em URLs %20 é o espaço correto.
Perguntas Frequentes
Qual a diferença entre encodeURI e encodeURIComponent?
encodeURI() não codifica caracteres de URL como :/?#[]@!$&'()*+,;= — é para codificar URLs completas. encodeURIComponent() codifica quase tudo, exceto - _ . ! ~ * ' ( ) — é para codificar valores individuais de parâmetros. Use encodeURIComponent para valores dentro de uma URL.
Por que o espaço vira + ou %20?
Na especificação original de formulários HTML (application/x-www-form-urlencoded), espaços eram codificados como +. Na especificação de URLs (RFC 3986), espaços devem ser %20. Ambos são aceitos, mas %20 é o padrão correto para URLs. O + é uma conveniência de formulários.
URL encoding preserva acentos e caracteres especiais do português?
Sim. Caracteres como ç, ã, é, ü são convertidos para sua representação UTF-8 em percent-encoding. Exemplo: "ç" vira %C3%A7 (dois bytes em UTF-8). Ao decodificar, o caractere original é restaurado corretamente desde que o encoding seja UTF-8.
Quando devo usar decodeURIComponent vs decodeURI?
Use decodeURIComponent() para decodificar valores individuais de parâmetros (o mais comum). Use decodeURI() quando precisar decodificar uma URL inteira preservando a estrutura. Na dúvida, decodeURIComponent é a escolha mais segura para dados de query string.
Posso ter problemas de segurança com URL encoding?
Sim. URL encoding inadequado pode levar a vulnerabilidades como URL injection e parameter tampering. Nunca confie em URLs recebidas de fontes desconhecidas sem sanitizar. Em aplicações web, sempre valide e sanitize parâmetros de URL antes de processá-los no servidor.
Esta ferramenta usa as funções nativas do navegador (encodeURIComponent/decodeURIComponent). Para codificação em servidor (PHP, Python, etc), os resultados são equivalentes. Cuidado ao decodificar URLs de fontes desconheciads — dados maliciosos podem ser decodificados junto.
