I myself typically binary compress then base64 encode.
I use 85 in json just fine without escaping overhead. Never tried for URLs or XML.
Because there is no padding rule given, it's impossible to use the standard to encode most binary strings.
For example, how would you encode/decode these?
0x0000000000000000
0x00000000000000
0x000000000000
0x0000000000
0x00000000
0x000000If people would start using this encoding, different users would adopt different solutions padding, length prefixes etc. and it becomes mess.
It's not "impossible to encode" that content just because you need to decide how to represent it. It's not "a mess" if some people use fixed-length strings and some use length-prefixed strings. It's just reality for any encoding scheme - you build layers around it, according to how you want to use it.
The same way the context of your software determines whether this binary string is supposed to represent a float, a name, a hash, or a pixel-art masterpiece, it will also determine the appropriate serialization.