Eso no es lo que preguntaba
jserrano. Él comentaba que a la hora de imprimir la cadena, desaparecían los caracteres '+'. Seguramente la ristra de caracteres forme parte de una codificación base64, y claro, no es bueno que se pierdan caracteres por el camino.
En HTML, un signo '+' es un signo '+'. No estamos hablando de codificación en HTML, sino de codificación en los URI, en que un '+' sirve para separar los argumentos.
Sacado del
RFC 1630, línea 363:
Citar:
Within the query string, the plus sign is reserved as shorthand
notation for a space. Therefore, real plus signs must be encoded.
This method was used to make query URIs easier to pass in systems
which did not allow spaces.
que quiere decir
Citar:
Dentro de la cadena de petición, el signo más está reservado como una
abreviatura de notación de un espacio. Los otros signos más deben ser codificados siempre.
Este método es usado para hacer peticiones URI más fáciles de pasar en sistemas
que no permitían espacios.
En cuanto a las funciones de codificación/descodificación, hace años que ya no se usan. Ahora, para esos menesteres, existen módulos que esconden esa complejidad, como
URI::Escape, por ejemplo, que si miras su código, verás que tiene en cuenta algunos casos más que el simplemente traducir codificaciones.