Curious TechieDev Toolbox
Todos os Guias/Padrões Web8 min read

O que é URL Encoding (Percent-Encoding)?

Padrão RFC 3986, caracteres reservados, tradução de bytes UTF-8 e sanitização de query strings em requisições HTTP.

Principais Conclusões
  • O Percent-encoding converte caracteres fora do conjunto ASCII padrão em sequências hexadecimais %HH (RFC 3986).
  • Delimitadores como ?, &, = e / têm papel estrutural na URI e precisam de escape.
  • A função encodeURIComponent() protege valores de parâmetros, enquanto encodeURI() mantém barras de caminho.
  • Espaços são convertidos em %20 (padrão formal) ou + em formulários HTML.

Identificadores Uniformes de Recursos (URIs) são limitados a um subconjunto restrito da tabela US-ASCII. Para transmitir caracteres acentuados, alfabetos internacionais, emojis e pontuações especiais, a internet adota o Percent-Encoding.

1. Por que as URLs Precisam de Percent-Encoding

Definido pela RFC 3986, o percent-encoding substitui bytes inválidos ou ambíguos por um sinal de porcentagem (%) seguido por dois dígitos hexadecimais correspondentes ao byte UTF-8/ASCII (ex.: Espaço = %20).

2. Caracteres Reservados vs Não Reservados

  • Não Reservados: A-Z, a-z, 0-9, -, _, ., ~ (nunca são codificados).
  • Reservados (Delimitadores): :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =.

3. encodeURI vs encodeURIComponent

Utilize encodeURI quando manipular uma URL completa preservando o protocolo (https://) e barras de caminho (/). Use encodeURIComponent para codificar valores isolados de parâmetros de consulta (como buscas contendo & ou =).

4. O Dilema do Espaço: %20 vs Sinal de Mais (+)

A RFC 3986 estabelece %20 para espaços em toda a extensão da URI. O caractere + para espaços surgiu na especificação legada de formulários HTML (application/x-www-form-urlencoded) e só é aceito em query strings.