@mikuphile utf8 is ascii compatible, includes no NULL bytes, it's very simple, and supports Icelandic and Russian with just 2 bytes (same as utf16)
It's just very simply the best. You can convert internally to 16/32 if you really need O(1) indexing, but in transport there's no argument