Guia de Codificação de URLs: Porquê e Como Codificar URLs
Já se perguntou por que é que os espaços nos URLs se tornam %20 e os "e" comerciais se tornam %26? A codificação de URLs (também chamada percent-encoding) converte caracteres que não são seguros para URLs num formato que os servidores web conseguem compreender.
Por Que a Codificação de URLs é Importante
Os URLs só podem conter 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, os URLs partem de formas imprevisíveis — um espaço pode truncar um URL, um "e" comercial pode ser confundido com um separador de parâmetros.
Experimente o nosso Codificador/Descodificador de URLs para ver como qualquer texto se transforma quando codificado para URLs.
Que 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 (codificar quando utilizados como dados)
| Carácter | Codificado | Função nos 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 chave-valor |
+ | %2B | Frequentemente representa espaço |
@ | %40 | Separador de informação de utilizador |
% | %25 | Indicador de codificação |
Codificar Sempre
Espaços (%20), caracteres não-ASCII (bytes UTF-8 codificados) e qualquer carácter fora do conjunto seguro.
Codificação de URLs na Prática
Parâmetros de Consulta
O caso de utilização mais comum. Ao construir URLs de pesquisa ou pedidos 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. Os espaços tornam-se + na codificação de formulários (ligeiramente diferente do percent-encoding).
Segmentos de Caminho
Nomes de ficheiros e identificadores de recursos nos caminhos de URLs também precisam de codificação. Um ficheiro chamado my report.pdf torna-se my%20report.pdf no 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 um URL já codificado transforma
%20em%2520 - Utilizar
encodeURIem vez deencodeURIComponent—encodeURIignora caracteres reservados que são importantes em valores de parâmetros - Não codificar sinais
+— Nos URLs,+pode significar espaço. Codifique sinais de mais literais como%2B - Esquecer caracteres não-ASCII — Caracteres Unicode precisam primeiro de codificação UTF-8 e depois de percent-encoding
Perguntas Frequentes
Qual é a diferença entre encodeURI e encodeURIComponent?
encodeURI codifica um URL completo, ignorando caracteres como :, /, ?, #. encodeURIComponent codifica tudo exceto caracteres não reservados — utilize-o para valores individuais de parâmetros de consulta.
Por que é que os espaços por vezes se tornam + e por vezes %20?
A codificação de formulários (application/x-www-form-urlencoded) utiliza + para espaços. O percent-encoding padrão utiliza %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 — construir APIs que tratam a codificação corretamente
- Codificador/Descodificador de URLs — codifique e descodifique URLs instantaneamente
- Codificador Base64 — codifique dados em formato Base64