mbtowc() 檢索的 wchar_t 值不是 UNICODE 值是否有原因?

mbtowc() 檢索的 wchar_t 值不是 UNICODE 值是否有原因?

如果我將字元 'ö' 從 UTF-8 語言環境(其中 是由兩個八位元組 0xC3 0xB6 表示)轉換為wchar_t,我得到wchar_t的值為0xF6。這適用於 Linux 和 Solaris。

如果我將字元「ö」從 ISO-8859-1 語言環境(其中 是由單一八位元組 0xF6 表示)轉換為 a wchar_t,則在 Linux 上得到wchar_t的值為 0xF6,在 Solaris 上得到的值為 0x30000076。

有人知道原因並能解釋一下背景嗎?

順便一提:由於 Solaris 的 i18n 原始碼由 Sun/Oracle、IBM 和 HP 共享,因此這很可能也適用於 AIX 和 HP-UX。

相關內容