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.