0

我用一个 UNICODE MFC 对话框应用程序测试了 Unicode 转换,我可以在编辑框中输入一些中文。读入字符后使用

DDX_Text(pDX, IDC_EDIT1, m_strUnicode) UpdateDate(TRUE)

m_pszdata显示m_strUnicode“e0 65 2d 4e 1f 75 09 67”。然后我使用以下代码将其转换为 char*:

字符 *psText; psText = 新字符[dwMinSize]; WideCharToMultiByte (CP_OEMCP, NULL, m_strUnicode,-1, psText, dwMinSize, NULL, FALSE);

包含“ psTextce de d6 d0 c9 fa d3 d0”,与m_pszdatam_strUnicode 没有相似之处。有人能解释一下为什么会这样吗?

4

1 回答 1

0

ce de d6 d0 c9 fa d3 d0无中生有GBK。你确定你在操纵Unicode?


CP_OEMCP instructs the API to use the currently set default OEM codepage.

所以我的猜测是你在一台中国PC上,默认代码页为GBK。

无中生有在 UTF16LE 中e0 65 2d 4e 1f 75 09 67,基本上你正在将 UTF-16-LE 字符串转换为 GBK。

于 2012-06-05T11:37:32.567 回答