If you use UTF-8, then the only ability you really need globally is the ability to manipulate streams of 8-bit bytes. Any problems with that?