Codificar URL: preserve o valor sem quebrar o link

Um link pode funcionar até receber um nome com &, + ou espaço. O nome não é necessariamente inválido; alguns caracteres também têm função estrutural na URL.

Um valor não é a URL inteira

Codifique o valor do parâmetro para que & não inicie outro parâmetro e # não abra um fragmento. Já um endereço completo precisa manter seus separadores estruturais.

Escolha conforme a entrada: endereço inteiro, componente ou valor de formulário. O resultado certo num contexto não é automaticamente adequado a outro.

Referências: WHATWG URL Standard — Percent encoding and form encoding

O sinal + muda de sentido conforme o contexto

Em formulários, + representa espaço e %2B representa o sinal de mais literal. Num componente, o espaço costuma ser %20 e + não vira espaço automaticamente.

Não substitua todo + sem conhecer o formato de origem. Separe o valor original do usuário da forma usada para transportá-lo.

Referências: WHATWG URL Standard — Percent encoding and form encoding

Decodificar é uma etapa definida, não um ciclo de reparo

Decodificar 2 vezes pode mudar o significado. Descubra quantas camadas o sistema produziu em vez de repetir até o texto parecer familiar.

A ferramenta muda a representação textual; não visita nem verifica o destino. Link legível não comprova confiança, e codificar informação sensível não a esconde.

Exemplo: valor com +, espaços e &

A+B & C vira A%2BB%20%26%20C como componente. Em formulário, vira A%2BB+%26+C. Cada forma retorna ao valor original com a convenção de decodificação correspondente.

%252F vira %2F ao decodificar uma vez, e / na segunda. Isso pode alterar um caminho ou valor; repetir a decodificação não é limpeza segura por definição.

Referências