Todos os artigos

URL Encode/Decode: o percent-encoding em links

Um link com "informação", "endereço" ou qualquer palavra com acento, til ou cedilha não pode entrar cru numa URL — cada caractere fora do conjunto seguro, incluindo espaço, &, ? e as letras acentuadas do português, precisa virar percent-encoding.

Por que "não" e "informação" ficam maiores depois de codificados

Cada letra acentuada é convertida primeiro para UTF-8 (2 bytes) e depois cada byte vira %XX: o ã de "não" se transforma em %C3%A3, seis caracteres no lugar de um. Num link de compartilhamento do WhatsApp — o app de mensagens mais usado no Brasil — um texto com vários acentos e cedilhas facilmente dobra ou triplica de tamanho depois da codificação.

encodeURIComponent x encodeURI

encodeURIComponent codifica quase todos os caracteres com função estrutural — &, ?, =, / — por isso é o certo para um único valor, como o texto de uma mensagem pronta num link wa.me. encodeURI preserva esses caracteres estruturais porque serve para codificar uma URL inteira já montada.

Um erro comum com links de PIX e boleto

Ao montar um link de pagamento ou de checkout com parâmetros como descrição ou nome do cliente contendo acentos, codificar a query string inteira em vez de cada valor separadamente faz o & e o = que separam os parâmetros virarem %26 e %3D — o servidor recebe um parâmetro ilegível em vez de vários.

Quando isso é necessário

  • Montar um link de WhatsApp com mensagem predefinida contendo acentos ou cedilha.
  • Gerar links com nome de produto ou busca em português como parâmetro.
  • Depuração: decodificar uma URL para ver o texto real por trás dos códigos %XX.

Caso extremo: dupla codificação

Se um texto já codificado (como %C3%A7 para "ç") for codificado de novo por engano, o próprio % vira %25, e o resultado fica ilegível (%C3%A7 vira %25C3%25A7). Isso costuma acontecer quando um framework já codifica a URL automaticamente e o código chama encodeURIComponent de novo sobre um valor que já veio pronto.

Experimentar a ferramenta