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

3

Se eu converter o caractere 'ö' de um locale UTF-8 (onde é representado pelas duas octetts 0xC3 0xB6) para um wchar_t , recebo um valor wchar_t que é 0xF6 . Isso se aplica ao Linux e Solaris.

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

Alguém sabe o motivo e é capaz de explicar o histórico?

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

    
por schily 27.08.2018 / 16:45

0 respostas