I was wondering...
(except the issue with the base64\'s plus\'+\' sign in query string - which is translated to \'space\' and can be solved by %2b) :---> w
fwiw, I use base64 whenever I want to transport anything that CAN be unicode, between a server and a client. urlencode doesn't handle all unicode charachters all that well. It quickly gets a mess with all the percentage signs.
so, in short: expecting unicode input/output, always base64 the transportation.