cstring m_pszdata与UNICODE中的转换char *不匹配

时间:2012-06-05 09:20:34

标签: unicode cjk cstring

我使用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 *:

  

char * psText; psText = new char [dwMinSize];   WideCharToMultiByte(CP_OEMCP,NULL,m_strUnicode,-1,psText,   dwMinSize,NULL,FALSE);

psText包含“ce de d6 d0 c9 fa d3 d0”,与m_strUnicode的m_pszdata没什么相似之处。有人请解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

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


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

所以我的猜测是你在一台中文电脑上用GBK作为默认代码页。

UTF16LE中的

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