Ir para o conteúdo principal

Como decodificar uma string codificada para URL

A decodificação inverte a codificação percentual: cada sequência %XX vira um byte, e os bytes são lidos como texto UTF-8. O modo Componente usa decodeURIComponent(), então o resultado é exatamente o valor original.

Exemplo prático

Sequências UTF-8 de vários bytes viram um único caractere.

Entrada
caf%C3%A9%20%26%20cr%C3%A8me
Resultado · decodeURIComponent()
café & crème

%20 vira espaço, mas + é mantido como sinal de mais literal.

Entrada
a+b%20c
Resultado · decodeURIComponent()
a+b c

Falta um dígito hexadecimal na última sequência, então a ferramenta mostra um erro.

Entrada
%E0%A4%A
Resultado · decodeURIComponent()
URL codificada inválida

Com o dígito restaurado, os três bytes viram uma única letra devanágari.

Entrada
%E0%A4%A4
Resultado · decodeURIComponent()
त

Como a ferramenta trata isso

  • Cada sequência %XX é um byte, e bytes consecutivos são decodificados juntos como UTF-8; assim, %C3%A9 vira é.
  • O sinal de mais não é tratado como espaço: + continua +. Se o texto veio de um formulário HTML, troque + por %20 antes de decodificar.
  • Se alguma sequência estiver incompleta ou não for UTF-8 válido, toda a entrada é rejeitada com um erro; nada é decodificado pela metade.
  • O modo URL completa (decodeURI) mantém codificados os escapes de caracteres reservados como %26, %2F e %3F, para não mudar a estrutura da URL.

Guias de codificação de URL