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。

相关内容