Los perfiles comparten escapes UTF-8, pero no escriben igual todos los valores. RFC 3986 conserva letras, dígitos, guion, punto, guion bajo y tilde. El componente de formulario conserva además asterisco y representa el espacio con un signo más especial.

%20 y + dependen del perfil

Un componente RFC codifica espacio como %20 y un más literal como %2B. El formulario escribe espacio como + y también protege un más literal con %2B. El decodificador necesita el perfil para saber si un más crudo significa más o espacio; URLCodec no adivina.

Un componente no es una URL completa

Separadores como barra, interrogación, &, igual y almohadilla estructuran una URL completa, pero dentro de un componente son datos y se escapan. URLCodec no ofrece modo URL completa: obliga a identificar el límite y evita mezclar sintaxis y valores en una salida ambigua.

Comprueba el componente receptor

La codificación porcentual depende del contexto. URLCodec transforma deliberadamente un valor y no analiza una URL completa, separa pares de consulta, normaliza rutas, valida destinos ni decide si otro sistema espera reglas de formulario. Pega el resultado solo en el componente cuyo contrato hayas comprobado. Codificar cambia la representación; no cifra, autentica, sanea ni vuelve seguro un destino.