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.