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.

Referencias