Gibt es einen Grund, warum der von mbtowc() abgerufene Wert eines wchar_t nicht der UNICODE-Wert ist?

Gibt es einen Grund, warum der von mbtowc() abgerufene Wert eines wchar_t nicht der UNICODE-Wert ist?

Wenn ich das Zeichen 'ö' aus einem UTF-8-Gebietsschema (wo es durch die beiden Oktette 0xC3 0xB6 dargestellt wird) in ein konvertiere wchar_t, erhalte ich den wchar_tWert 0xF6. Dies gilt für Linux und Solaris.

Wenn ich das Zeichen „ö“ von einem ISO-8859-1-Gebietsschema (wo es durch das einzelne Oktett 0xF6 dargestellt wird) in ein konvertiere wchar_t, erhalte ich wchar_tunter Linux den Wert 0xF6 und unter Solaris den Wert 0x30000076.

Kennt jemand den Grund und kann die Hintergründe erklären?

Übrigens: Da der i18n-Quellcode von Solaris von Sun/Oracle, IBM und HP gemeinsam genutzt wird, besteht eine große Chance, dass dies auch für AIX und HP-UX gilt.

verwandte Informationen