Codificação de URL Explicada (Percent-Encoding e quando se aplica)
URLs são surpreendentemente exigentes quanto aos caracteres que aceitam. Espaços, acentos e símbolos podem quebrar um link ou corromper um parâmetro a menos que sejam codificados. Este guia explica o percent-encoding, a diferença entre `%20` e `+` e como consertar uma URL quebrada.
Por que uma URL precisa ser codificada?
Uma URL é feita de caracteres reservados (/, ?, &, =, # e outros) que carregam estrutura. Se seus dados contêm algum deles, você precisa codificá-lo para o navegador não ler errado. Caracteres não ASCII como ? e é também precisam ser codificados em sequências percentuais.
Como o percent-encoding funciona?
Cada byte inseguro vira um % seguido de dois dígitos hexadecimais. A letra ? vira %3F, é vira %C3%A9 e muitos espaços aparecem como %20. Como essas strings hexadecimais nunca colidem com caracteres reservados, a URL permanece sem ambiguidade.
Por que algumas URLs usam %20 e outras usam +?
Na parte de caminho de uma URL, espaços normalmente são codificados como %20. Em corpos application/x-www-form-urlencoded e em algumas query strings, um + é usado para espaço. A escolha depende do contexto, por isso uma URL que parece correta pode renderizar de forma diferente.
Quais são as quebras comuns e como detectá-las?
Um link com um & cru em um valor divide o parâmetro silenciosamente. Um # em um valor corta o resto da URL. Um valor com espaços pode ser truncado. Se seus dados contêm algum desses, codifique-os antes de montar o link.
Como codificar e decodificar uma URL com segurança?
Codifique a parte certa da URL com a função certa e verifique o resultado. O codificador de URL permite alternar entre estilos %20 e +, detecta o que já está codificado e lida com queries inteiras ou componentes individuais.