Codificação de URL: Tudo o Que Você Precisa Saber

· 12 min de leitura

Índice

Entendendo a Codificação de URL

A codificação de URL, também conhecida como codificação percentual, é um mecanismo fundamental para garantir a transmissão confiável de dados pela internet. Ela converte caracteres que não são permitidos em URLs em um formato que pode ser transmitido e interpretado com segurança por navegadores web, servidores e outras infraestruturas da internet.

Em sua essência, a codificação de URL resolve um problema simples: URLs só podem conter um conjunto limitado de caracteres do conjunto de caracteres ASCII. Quando você precisa incluir caracteres fora deste conjunto—sejam eles símbolos especiais, espaços ou caracteres não latinos—eles devem ser codificados em um formato universalmente reconhecido.

O processo de codificação substitui caracteres problemáticos por um sinal de porcentagem (%) seguido por dois dígitos hexadecimais representando o código ASCII ou UTF-8 do caractere. Isso garante que cada componente da sua URL seja transmitido exatamente como pretendido, sem interpretação incorreta ou perda de dados.

Dica rápida: Use nossa ferramenta Codificador e Decodificador de URL para codificar ou decodificar instantaneamente qualquer string de URL sem escrever código.

Por Que a Codificação de URL é Necessária

A necessidade de codificação de URL decorre das restrições de design originais da internet e da especificação de URL definida na RFC 3986. URLs foram projetadas para funcionar com um conjunto limitado de caracteres para garantir compatibilidade entre diferentes sistemas, protocolos e regiões geográficas.

Sem a codificação de URL, vários problemas críticos surgiriam:

Considere uma consulta de pesquisa por "gatos & cachorros" em uma URL. Sem codificação, o e comercial seria interpretado como um separador de parâmetros, potencialmente quebrando sua consulta em dois parâmetros separados. A codificação de URL transforma isso em gatos%20%26%20cachorros, preservando o significado pretendido.

A Limitação ASCII

URLs são construídas no conjunto de caracteres ASCII, que inclui apenas 128 caracteres. Destes, apenas um subconjunto—conhecido como "caracteres não reservados"—pode aparecer em URLs sem codificação. Esses caracteres não reservados incluem:

Todo o resto requer codificação para garantir a transmissão e interpretação adequadas pela internet.

Como Funciona a Codificação de URL

O processo de codificação de URL segue um algoritmo direto que converte caracteres em seus equivalentes codificados em porcentagem. Entender esse processo ajuda você a solucionar problemas de codificação e escrever aplicações web mais robustas.

O Algoritmo de Codificação

Quando um caractere precisa ser codificado, o processo funciona da seguinte forma:

  1. Identificar o caractere: Determinar qual caractere precisa de codificação com base no componente da URL e nas regras de codificação.
  2. Obter o valor do byte: Converter o caractere para sua representação em bytes usando codificação UTF-8 (ou ASCII para caracteres básicos).
  3. Converter para hexadecimal: Expressar cada byte como dois dígitos hexadecimais.
  4. Adicionar prefixo de porcentagem: Preceder cada par hexadecimal com um sinal de porcentagem (%).

Por exemplo, o caractere de espaço tem um valor ASCII de 32 (decimal) ou 20 (hexadecimal). Quando codificado, torna-se %20. O símbolo arroba (@) tem um valor ASCII de 64 (decimal) ou 40 (hexadecimal), então é codificado como %40.

Codificação Multi-Byte UTF-8

Para caracteres fora do intervalo ASCII, a codificação UTF-8 produz múltiplos bytes, cada um dos quais é codificado em porcentagem. O emoji "😀" (rosto sorridente) é codificado em UTF-8 como quatro bytes: F0 9F 98 80. Em uma URL, isso se torna %F0%9F%98%80.

Esta codificação multi-byte garante que caracteres de qualquer idioma ou conjunto de símbolos possam ser transmitidos com segurança em URLs, tornando a web verdadeiramente internacional.

Dica profissional: Ao depurar problemas de codificação de URL, use as ferramentas de desenvolvedor do seu navegador para inspecionar a URL codificada real sendo enviada. A aba Network mostra a solicitação codificada bruta, que pode revelar problemas de codificação.

Caracteres Que Precisam de Codificação

Nem todos os caracteres requerem codificação em todos os contextos, mas entender quais caracteres precisam de codificação e quando é essencial para construir aplicações web confiáveis. Os requisitos de codificação variam dependendo de qual parte da URL você está trabalhando.

Caracteres Reservados

Caracteres reservados têm significado especial na sintaxe de URL e devem ser codificados quando usados como dados em vez de delimitadores. Esses caracteres incluem:

Caractere Propósito em URLs Forma Codificada
: Separa esquema e host, delimitador de porta %3A
/ Separador de segmento de caminho %2F
? Marca o início da string de consulta %3F
# Marca o início do identificador de fragmento %23
[ ] Delimitadores de endereço IPv6 %5B %5D
@ Separa credenciais do host %40
! $ & ' ( ) * + , ; = Sub-delimitadores para vários propósitos %21 %24 %26 %27 %28 %29 %2A %2B %2C %3B %3D

Caracteres Inseguros

Certos caracteres são considerados inseguros porque podem ser modificados ou mal interpretados durante a transmissão. Estes sempre requerem codificação:

Caractere Por Que É Inseguro Forma Codificada
Espaço Pode ser removido ou convertido para + %20
" Usado para delimitar URLs em HTML %22
< > Usados em tags HTML, podem ser filtrados %3C %3E
% Delimitador de codificação em si %25
\ Separador de caminho em alguns sistemas %5C
^ ` { } | Não universalmente suportados %5E %60 %7B %7D %7C

Codificação Dependente de Contexto

Os requisitos de codificação diferem com base em qual componente de URL você está trabalhando. Um caractere que é seguro em um contexto pode exigir codificação em outro:

Casos de Uso Comuns para Codificação de URL

A codificação de URL aparece em inúmeros cenários do mundo real. Entender esses casos de uso ajuda você a reconhecer quando e como aplicar codificação em seus próprios projetos.

Consultas de Pesquisa

Mecanismos de busca dependem fortemente da codificação de URL para lidar com consultas de usuários. Quando você pesquisa por "como fazer um bolo?" no Google, a URL se torna algo como:

https://www.google.com/search?q=como+fazer+um+bolo%3F

Observe que os espaços são codificados como sinais de mais (uma codificação alternativa para espaços em strings de consulta) e o ponto de interrogação é codificado como %3F para distingui-lo do delimitador de string de consulta.

Envios de Formulários

Quando formulários HTML são enviados usando o método GET, os dados do formulário são codificados e anexados à URL. Considere um formulário de login com campos de nome de usuário e senha:

https://example.com/login?username=joao.silva%40example.com&password=S%40nha123%21

O endereço de e-mail e os caracteres especiais na senha são devidamente codificados para evitar problemas de interpretação.

Nota de segurança: Nunca envie dados sensíveis como senhas em parâmetros de URL. Este exemplo é apenas para ilustração. Sempre use solicitações POST com HTTPS para autenticação.

Solicitações de API

APIs RESTful frequentemente incluem parâmetros em URLs que requerem codificação. Ao filtrar resultados ou passar estruturas de dados complexas, a codificação adequada garante que a API receba exatamente o que você pretendia:

https://api.example.com/users?filter=created_at>2024-01-01&sort=-name

O símbolo de maior que no parâmetro de filtro deve ser codificado como %3E para evitar confusão com entidades HTML ou outras interpretações.

Downloads de Arquivos

Ao servir arquivos com nomes não-ASCII, a codificação de URL garante que o nome do arquivo seja transmitido corretamente:

https://example.com/downloads/Apresenta%C3%A7%C3%A3o%202024.pdf

O "ç" e o "ã" acentuados em "Apresentação" são codificados como %C3%A7 e %C3%A3 (suas representações UTF-8), permitindo que usuários em todo o mundo baixem o arquivo independentemente da codificação de caracteres de seus sistemas.

Compartilhamento em Redes Sociais

Plataformas de mídia social usam codificação de URL ao compartilhar links com texto pré-preenchido. Um link de compartilhamento do Twitter pode parecer com:

https://twitter.com/intent/tweet?text=Confira%20este%20artigo%21&url=https%3A%2F%2Fexample.com%2Fartigo

Tanto o texto do tweet quanto a URL sendo compartilhada são codificados para garantir que

We use cookies for analytics. By continuing, you agree to our Privacy Policy.