Guia de URL Encoding: Por Que e Como Codificar URLs
Já se perguntou por que espaços em URLs se tornam %20 e o "e comercial" se torna %26? URL encoding (também chamado de codificação percentual) converte caracteres que não são seguros para URLs em um formato que servidores web podem interpretar.
Por Que URL Encoding É Importante
URLs podem conter apenas um conjunto limitado de caracteres ASCII. Caracteres especiais, espaços e texto não-ASCII precisam de codificação para serem transmitidos com segurança. Sem codificação, URLs quebram de formas imprevisíveis — um espaço pode truncar uma URL, um "e comercial" pode ser confundido com um separador de parâmetros.
Experimente nosso Codificador/Decodificador de URL para ver como qualquer texto se transforma quando codificado para URLs.
Quais Caracteres Precisam de Codificação?
Caracteres Seguros (sem necessidade de codificação)
Letras (A-Z, a-z), dígitos (0-9) e estes símbolos: -, _, ., ~
Caracteres Reservados (codifique quando usados como dados)
| Caractere | Codificado | Função em URLs |
|---|---|---|
: | %3A | Separador de esquema |
/ | %2F | Separador de caminho |
? | %3F | Início da query string |
# | %23 | Identificador de fragmento |
& | %26 | Separador de parâmetros |
= | %3D | Separador de chave-valor |
+ | %2B | Frequentemente representa espaço |
@ | %40 | Separador de informação de usuário |
% | %25 | Indicador de codificação |
Sempre Codifique
Espaços (%20), caracteres não-ASCII (bytes UTF-8 codificados) e qualquer caractere fora do conjunto seguro.
URL Encoding na Prática
Parâmetros de Query
O caso de uso mais comum. Ao construir URLs de busca ou requisições de API:
https://api.example.com/search?q=hello%20world&lang=en
Dados de Formulário
Formulários HTML com method="GET" codificam os valores dos campos automaticamente. Espaços se tornam + na codificação de formulário (ligeiramente diferente da codificação percentual).
Segmentos de Caminho
Nomes de arquivos e identificadores de recursos em caminhos de URL também precisam de codificação. Um arquivo chamado meu relatório.pdf se torna meu%20relat%C3%B3rio.pdf na URL.
Codificação em Diferentes Linguagens
JavaScript:
encodeURIComponent('hello world & more')
// "hello%20world%20%26%20more"
decodeURIComponent('hello%20world')
// "hello world"
Python:
from urllib.parse import quote, unquote
quote('hello world & more')
# 'hello%20world%20%26%20more'
Erros Comuns
- Codificação dupla — Codificar uma URL já codificada transforma
%20em%2520 - Usar
encodeURIem vez deencodeURIComponent—encodeURIignora caracteres reservados que importam em valores de query - Não codificar o sinal
+— Em URLs,+pode significar espaço. Codifique sinais de mais literais como%2B - Esquecer caracteres não-ASCII — Caracteres Unicode precisam de codificação UTF-8 primeiro, depois codificação percentual
Perguntas Frequentes
Qual é a diferença entre encodeURI e encodeURIComponent?
encodeURI codifica uma URL completa, ignorando caracteres como :, /, ?, #. encodeURIComponent codifica tudo exceto caracteres não reservados — use-o para valores individuais de parâmetros de query.
Por que espaços às vezes se tornam + e às vezes %20?
A codificação de formulário (application/x-www-form-urlencoded) usa + para espaços. A codificação percentual padrão usa %20. Ambos são válidos em contextos diferentes.
Recursos Relacionados
- Base64 Encoding Explicado — outro esquema de codificação essencial
- Padrões de Design de API JSON — construindo APIs que lidam com codificação corretamente
- Codificador/Decodificador de URL — codifique e decodifique URLs instantaneamente
- Codificador Base64 — codifique dados em formato Base64