Codificar URL: conserva el valor sin romper el enlace
Un enlace puede funcionar hasta añadir un nombre con &, + o espacios. El nombre no tiene por qué ser inválido: algunos caracteres también cumplen funciones estructurales dentro de la URL.
Un valor no es toda la URL
Codifica el valor del parámetro para que & no inicie otro parámetro ni # un fragmento. Al codificar una dirección completa debes conservar sus separadores estructurales.
Elige según lo que tengas: dirección entera, componente o valor de formulario. Lo correcto para un contexto no sirve automáticamente para otro.
Referencias: WHATWG URL Standard — Percent encoding and form encoding
El signo + depende del contexto
En formularios + representa espacio y %2B un signo más literal. En un componente, el espacio suele ser %20 y + no se interpreta automáticamente como espacio.
No sustituyas todos los signos + sin saber el formato de origen. Separa el valor original del usuario de la representación usada para transportarlo.
Referencias: WHATWG URL Standard — Percent encoding and form encoding
Decodificar es un paso definido, no una reparación en bucle
Decodificar 2 veces puede cambiar el significado. Averigua cuántas capas produjo el sistema, en vez de repetir hasta que el texto parezca conocido.
Esta herramienta cambia la representación textual; no visita ni verifica el destino. Un enlace legible no prueba confianza, y codificar información sensible no la esconde.
Ejemplo: un valor con +, espacios y &
A+B & C se convierte en A%2BB%20%26%20C como componente. En un formulario queda A%2BB+%26+C. Cada forma vuelve al valor original al decodificar con su convención correspondiente.
%252F se convierte en %2F tras una decodificación y en / tras otra. Eso puede alterar una ruta o valor; repetir no es una limpieza segura por defecto.