O que é a codificação de URL?
A codificação de URL (também conhecida como codificação por percentagem) é um método para converter caracteres especiais num formato que pode ser transmitido de forma segura num URL.Uma vez que os URLs apenas podem conter um conjunto específico de caracteres ASCII, quaisquer caracteres fora desse conjunto precisam de ser codificados.
Principais características:
- Transmissão segura: Garante que os caracteres especiais e não ASCII são transmitidos corretamente nos URLs
- Formato padronizado: Utiliza o formato %XX, em que XX é a representação hexadecimal do caractere
- Amplo suporte: Suportado por todos os navegadores e servidores web modernos
- Conversão reversível: Os dados codificados podem ser totalmente restaurados para o seu conteúdo original
Regras de codificação:
A codificação de URL converte caracteres não seguros para o formato %
seguido por dois dígitos hexadecimais:
- O espaço é codificado como
%20
- Os caracteres chineses são primeiro codificados em UTF-8 e depois com a codificação por percentagem
- Caracteres reservados (como
?
,&
,=
etc.) precisam de ser codificados em contextos específicos
Cenários de aplicação comuns:
- Passagem de parâmetros de URL: Transmitir valores de parâmetros que contêm caracteres especiais na cadeia de consulta
- Submissão de dados de formulário: Os dados são codificados automaticamente quando um formulário HTML é submetido
- Chamadas de API: Garantir que os parâmetros passados para uma API estão no formato correto
- Manuseamento de nomes de ficheiro: Lidar com nomes de ficheiro que contêm caracteres especiais
- Consultas de pesquisa: Pesquisar conteúdo que contém caracteres especiais nos motores de busca
Exemplos de utilização
Codificação de texto básica
Texto original: Hello World!
Após a codificação: Hello%20World%21
Codificação de caracteres chineses
Texto original: 你好世界
Após a codificação: %E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C
Exemplo de parâmetro de URL
URL original:
https://example.com/search?q=编程 & 开发&category=技术
URL codificado corretamente:
https://example.com/search?q=%E7%BC%96%E7%A8%8B%20%26%20%E5%BC%80%E5%8F%91&category=%E6%8A%80%E6%9C%AF
Tabela de codificação de caracteres especiais
Caractere | Resultado da codificação | Descrição |
---|---|---|
Espaço | %20 | O caractere codificado mais comum |
! | %21 | Ponto de exclamação |
@ | %40 | Símbolo arroba |
# | %23 | Sinal de cardinal (identificador de âncora) |
$ | %24 | Símbolo do dólar |
% | %25 | Sinal de percentagem (precisa de ser codificado para evitar conflitos) |
& | %26 | E comercial (separador de parâmetros) |
= | %3D | Sinal de igual (separador de chave-valor) |
? | %3F | Ponto de interrogação (início da cadeia de consulta) |
/ | %2F | Barra (separador de caminho) |
Cenários de aplicação prática
1. Funcionalidade de pesquisa
// Pesquisa do utilizador: "Comparação de frameworks React & Vue"\nconst searchQuery = encodeURIComponent('Comparação de frameworks React & Vue')\nconst url = `https://api.example.com/search?q=${searchQuery}`\n// Resultado: https://api.example.com/search?q=Compara%C3%A7%C3%A3o%20de%20frameworks%20React%20%26%20Vue
2. Transferência de ficheiros
// Nome do ficheiro a transferir contém caracteres especiais: "Documentação do projeto.pdf"\nconst filename = encodeURIComponent('Documentação do projeto.pdf')\nconst downloadUrl = `https://example.com/download?file=${filename}`
3. Transmissão de informações do utilizador
// Nome do utilizador: "João Silva", E-mail: "joao@example.com"\nconst name = encodeURIComponent('João Silva')\nconst email = encodeURIComponent('joao@example.com')\nconst profileUrl = `https://example.com/profile?name=${name}&email=${email}`
Precauções
Lembrete importante: A codificação de URL não é um método de encriptação. Os dados codificados podem ser facilmente descodificados.Serve apenas para garantir a transmissão correta dos dados num URL e não deve ser usada para proteger informações sensíveis.
Perguntas frequentes:
- Codificação dupla: Evite codificar uma cadeia de caracteres que já foi codificada
- Quando codificar: A codificação deve ser feita ao construir o URL, não ao receber os dados
- Problemas com o conjunto de caracteres: Certifique-se de usar a codificação UTF-8 para lidar com caracteres não ASCII, como os caracteres portugueses
- Caracteres reservados: Saiba que caracteres precisam de ser codificados nas diferentes partes de um URL
Melhores práticas:
- Codifique sempre os dados introduzidos pelo utilizador antes de construir um URL
- Utilize funções de codificação padrão (como
encodeURIComponent()
do JavaScript) - Descodifique corretamente os dados recebidos no lado do servidor
- Teste cenários que incluam vários caracteres especiais e não ASCII