taking shortcuts when it comes to storing and passing around conversion states.
locale-sensitive collation only in single-byte locales, and just does binary comparison for the others with extended character sets.