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.