我使用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
没什么相似之处。有人请解释为什么会这样吗?
答案 0 :(得分:0)
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。