WINCE系统中,CString含中文,如何转成char * , 通过串口输出?
试了N个办法,请大家在[看清前提]下出出主意帮帮忙:
1. 项目属性的Locale设置的是美国英文
2. 项目字符集是 unicode
3. 是WINCE系统,不是电脑的WINDOW
如果我在程序中通过如下语句:
printf("\n=========================================\n");
printf("测试结果:\n");
电脑上面串口工具接收和显示的结果一切正常,"测试结果"这几个中文是没问题的!!!!
但如下代码就有问题:
CString m_stringDisp = _T("abc中文");
int n = m_stringDisp.GetLength();
int len = WideCharToMultiByte(CP_ACP,0,m_stringDisp,m_stringDisp.GetLength(),NULL,0,NULL,NULL);
char * pDebugInfo = new char[len+1]; //以字节为单位
WideCharToMultiByte(CP_ACP,0,m_stringDisp,m_stringDisp.GetLength() + 1 ,pDebugInfo,len + 1 ,NULL,NULL);
pDebugInfo[len+1] = 0;
printf("%s",pDebugInfo);
输出结果为:abc??
即所有的中文都显示成"?",我用十六进制打印了pDebugInfo数组的结果是 0x61 0x62 0x63 0x3f 0x3f
折腾N久了 ! (在不修改项目属性的Locale提前下,有没有办法啊?)
拜托各位大神了!!!!
[解决办法]
int len = WideCharToMultiByte(936,...
试试
[解决办法]
我的笨办法:
int len=str.GetLength();
TCHAR *tbuf=str.GetBuffer(len);
char *buf= new char[len+1];
for(int i=0;i<len;i++)
buf[i]=char(tbuf[i]);
buf[i]='\0';
str.ReleaseBuffer();
[解决办法]