O Que é Codificação URL?
Se você já viu %20 em uma URL onde deveria haver um espaço, você viu codificação URL em ação. Este guia explica o que é, por que existe e como usá-la corretamente em suas aplicações web.
Por Que Codificação URL Existe
URLs foram projetadas nos primeiros dias da internet quando ASCII era o único conjunto de caracteres padrão. A especificação URL limita quais caracteres podem aparecer em URLs—principalmente letras, números e alguns símbolos específicos. Esta limitação existe por várias razões. Primeiro, certos caracteres têm significados especiais em URLs. O ponto de interrogação ? inicia parâmetros de consulta. E comercial & separa parâmetros. Igual = conecta chaves a valores. Hash # marca fragmentos. Dois pontos : e barras / estruturam a própria URL. Se você quer usar estes caracteres como dados reais, precisa de uma maneira de diferenciá-los de seus usos especiais. Segundo, alguns caracteres são inseguros em URLs. Espaços, aspas e vários símbolos podem ser interpretados de forma diferente por diferentes sistemas. Alguns podem ser alterados por proxies, manipulação de servidor ou software de email. Codificar garante que seus dados cheguem intactos. Terceiro, caracteres internacionais (não-ASCII) como acentos, emoji ou caracteres chineses não faziam parte do design URL original. Codificação fornece uma maneira de representar qualquer caractere Unicode usando apenas caracteres seguros de ASCII. Codificação URL resolve todos estes problemas convertendo caracteres problemáticos em um formato seguro e não ambíguo usando porcentagem seguida de dígitos hexadecimais.
Como Funciona
Codificação de porcentagem substitui cada caractere problemático por % seguido de dois dígitos hexadecimais representando o valor de byte do caractere. O processo é mecânico e reversível. Para caracteres ASCII: encontre o código ASCII (espaço = 32), converta para hexadecimal (32 = 0x20), adicione prefixo com % (resultado: %20). Exemplos comuns: espaço → %20, ! → %21, # → %23, $ → %24, & → %26, = → %3D, ? → %3F. Para caracteres não-ASCII: primeiro codifique o caractere como bytes UTF-8, então codifique por porcentagem cada byte. O caractere ã (a com til) é byte UTF-8 0xC3 0xA3, então torna-se %C3%A3. Emoji 😀 codifica como quatro bytes, tornando-se %F0%9F%98%80. Decodificação reverte o processo: encontre sequências %XX, converta hex para decimal, converta para caractere. %20 → 0x20 → 32 → espaço. Para UTF-8 multi-byte, agrupe sequências, decodifique para bytes, interprete como UTF-8. Caracteres seguros nunca precisam de codificação: a-z, A-Z, 0-9, hífen -, sublinhado _, ponto ., til ~. Estes são garantidos de trabalhar em qualquer lugar em URLs.
Quando Usar
Sempre codifique: Valores de parâmetro de consulta de entrada de usuário. Valores de formulário sendo enviados via GET. Nomes de arquivo ou IDs com caracteres especiais em caminhos. Qualquer dado dinâmico sendo inserido em URLs. Nunca codifique: URLs completas e bem formadas. Estrutura de URL (protocolos, barras, dois pontos). Dados que já estão codificados (evite codificação dupla). Saída de funções que codificam automaticamente. Use ferramentas certas: JavaScript: encodeURIComponent() para valores, encodeURI() para URLs completas. Python: urllib.parse.quote() e quote_plus(). PHP: urlencode() para valores, rawurlencode() para caminhos. Java: URLEncoder.encode(). Confie em frameworks: Bibliotecas HTTP modernas (fetch, axios) codificam parâmetros automaticamente. Frameworks web decodificam automaticamente. Sempre verifique o que suas ferramentas fazem automaticamente.
Testar a Ferramenta
Codificador/Decodificador URL