Some wording fixes have been made, thanks Jens for the feedback.
There is now a class-wide invariant that name is empty only when mib() == unknown is true.
This revision also mandates CHAR_BIT == 8, to side step some interesting discussions that
have no bearing on practical uses of this proposal.
If someone wants to write a paper to describe existing practice with double bytes text encoding on DSPs and how they are manipulated there, it is a restriction that can be relaxed in a future standard.
I also added some prose to clarify that it is in fact possible to use UCS2 on a little endian system, Microsoft certainly did so for 10-20 years.
The goal is to state the intent in the prose, even if there are disagreements about whether the wording sufficiently reflects that intent.
Note that I have not yet removed the term "scheme" from the wording, but I am itching to do so as recent conversations have not really convinced me that this was a useful distinction to make.
Thanks, in particular to people who gave feedback on the previous revision.