Back

Por que as URLs têm caracteres estranhos como %20? (Segredos da codificação de URL)

Você já copiou uma URL do seu navegador e a colou em um mensageiro, apenas para descobrir que ela se transformou em uma bagunça de caracteres %EA%B0%80...?

Especificamente, os espaços se transformam em %20. Por que as URLs não podem simplesmente usar caracteres como estão, em vez de convertê-los nesse formato complexo?

O nome oficial para esse fenômeno é Codificação de URL ou Codificação percentual.

1. As Primeiras Regras da Internet: ASCII

Quando a internet foi construída pela primeira vez, o padrão para comunicação de computadores era o ASCII. ASCII é um conjunto de caracteres de 7 bits que inclui apenas letras inglesas, números e alguns caracteres especiais.

O padrão de URL (RFC 3986) limitou estritamente os caracteres permitidos em uma URL.

  • Caracteres Não Reservados: A-Z, a-z, 0-9, -, _, ., ~
  • Caracteres Reservados: :, /, ?, #, &, etc. (Usados para estrutura de URL)

Qualquer caractere que não esteja nesta lista (como espaços, caracteres não ingleses ou outros símbolos) teve que ser convertido em um formato compatível com ASCII para que o sistema o entendesse.

2. Como Funciona a Codificação Percentual

A regra de conversão é simples.

  1. Pegue o valor do byte do caractere em hexadecimal.
  2. Prefixe-o com um sinal %.

Exemplo: Espaço

Em ASCII, um espaço tem o valor decimal 32, que é 20 em hexadecimal.
Portanto, um espaço se torna %20.

Exemplo: Caracteres Não ASCII

Para caracteres como emojis ou letras de outros idiomas, a sequência de bytes UTF-8 é codificada. Se um caractere ocupar 3 bytes em UTF-8, ele se tornará três grupos codificados por porcentagem (por exemplo, %E2%9C%A8 para ✨).

3. Segurança e Estabilidade

A codificação de URL é importante não apenas para representação, mas também para segurança e estabilidade.

Por exemplo, e se um valor de parâmetro de URL contiver & ou =?
search?query=A&B

O sistema pode interpretar mal isso como query=A e um novo parâmetro B.
Ao codificar & como %26 para enviar search?query=A%26B, o sistema pode interpretá-lo corretamente como o caractere literal '&'.

Conclusão

As strings de aparência estranha como %20 são, na verdade, o resultado de esforços para manter a história e a compatibilidade da internet.

Embora as barras de endereço do navegador mostrem caracteres decodificados para conveniência do usuário, lembre-se de que, nos bastidores, os sinais de porcentagem ainda estão viajando ocupados pela rede.

TechURLEncodingWeb

Explore ferramentas relacionadas

Experimente estas ferramentas gratuitas do Pockit