While base91 seems to have really good properties for my requirements, I just found patent US20030152220A1, which looks like it fairly concretely captures the implementational specifics of base-n encoding, and base91 in particular. (Indeed, the patent actually answers some questions I had about the specifics of implementing base91!)
So, I'm very curious. base91 isn't widely implemented, but it isn't that hard to find open-source Perl, Python, PHP, C#, C, and even assembly-language implementations out there, so people are using it. I'm sure it's implemented commercially too.
I understand that patents only grant someone the right to enforce their ownership of something. With this in mind, is there an easy way I can find out that using base91 may be a Bad Idea™?
As an example of the standpoint I'm coming from, the H.264 video format is patented, and while there are open-source H.264 codecs that permit royalty-free commercial use (eg via the LGPL), it's generally a good idea to get eg a patent pool license from MPEG-LA when actually using H.264 in a commercial setting, as the H.264 patents do not permit royalty-free commercial use.
This base91 patent only covers the technical specifics and does not stipulate any royalties or other requirements, and furthermore I've never heard of any patent issues with any base-n encoding scheme. However, this patent was granted, to a university in China (effective Nov 2002 forward), and I'd like to stay on the safe side.
That said, I really don't want the answer to be "don't use it" :)
My apologies if this question is formatted incorrectly or is inappropriate for this site. First question here! :)
(I also suspect I'm not using the best tags for this question.)
Technical aside for anyone curious: Wikipedia's entry for base64 provides a decent explanation that explains the algorithm reasonably accessibly. Essentially, many situations that require binary data to be passed through systems that cannot safely handle binary data (most notably email, for historical reasons) generally encode the data using base64.