Existe uma razão pela qual o valor de wchar_t recuperado por mbtowc() não é o valor UNICODE?

Existe uma razão pela qual o valor de wchar_t recuperado por mbtowc() não é o valor UNICODE?

Se eu converter o caractere 'ö' de uma localidade UTF-8 (onde is é representado pelos dois octetos 0xC3 0xB6) para a wchar_t, obtenho um wchar_tvalor que é 0xF6. Isso se aplica ao Linux e ao Solaris.

Se eu converter o caractere 'ö' de um código de idioma ISO-8859-1 (onde is é representado pelo único octeto 0xF6) para a wchar_t, obtenho um wchar_tvalor de 0xF6 no Linux e um valor de 0x30000076 no Solaris.

Alguém sabe o motivo e é capaz de explicar o contexto?

A propósito: como o código-fonte i18n do Solaris é compartilhado pela Sun/Oracle, IBM e HP, há uma grande chance de que isso também se aplique ao AIX e ao HP-UX.

informação relacionada