function converts a single-byte character into a corresponding wide character.
If the character is
or not valid in the initial shift state,
function converts a wide character into a corresponding single-byte character.
If the wide character is
or not able to be represented as a single byte in the initial shift state,
The _l-suffixed versions take an explicit locale argument, while the
non-suffixed versions use the current global or per-thread locale.