Есть ли причина, по которой значение wchar_t, полученное с помощью mbtowc(), не является значением UNICODE?

Есть ли причина, по которой значение wchar_t, полученное с помощью mbtowc(), не является значением UNICODE?

Если я преобразую символ 'ö' из локали UTF-8 (где он представлен двумя октетами 0xC3 0xB6) в wchar_t, я получаю wchar_tзначение 0xF6. Это применимо к Linux и Solaris.

Если я преобразую символ «ö» из локали ISO-8859-1 (где он представлен одним октетом 0xF6) в wchar_t, я получу wchar_tзначение 0xF6 в Linux и значение 0x30000076 в Solaris.

Кто-нибудь знает причину и может объяснить подоплеку?

Кстати: поскольку исходный код i18n из Solaris используется совместно Sun/Oracle, IBM и HP, есть большая вероятность, что это применимо также к AIX и HP-UX.

Связанный контент