If the parameter value was really supposed to be "H+43b..." and so on, then you should URL-encode that value before appending it to the URL. As it is, the servlet container is assuming that it was URL-encoded (as per the rules for URLs) and is URL-decoding it. This translates + to space, among other things.
When generating the URL, base64 it first, then URLencode. The + (part of the base64) will be replaced with %2B. Then when you want to read it again, URLdecode it again (if the server doesn't do that for you), then de-base64 it.