我写的一个在winCE下运行的程序显示从WindowsXp系统发过来的读取TXT文件得到的汉字数据,但是总是显示方框,我用MultiByteToWideChar()强制转化后显示“??”,请问如何解决?
代码如下:
Cstring m_no;
m_no.Format(_T("%c%c%c%c%c%c%c%c"),result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7]);
MultiByteToWideChar(CP_ACP,0,(const char*)(LPCTSTR)m_no,8,m_no1,8);
m_NO=m_no1;
UpdateData(false);
result[](char数组)为传输过来的汉字数据,
m_NO为窗体中输出文本框变量。
支持 关键的一点忘了说
如果我用“中文文字”这个字符串赋值给m_NO它就能显示,如果用以上格式化的到的字符串就不能显示,就算是用m_no.Format(_T("%c"),‘中’)就显示方框。
还望给点指点
你调试一下,看看result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7]这几个数组中是中文吗?不行,吧数组类型设置为WCHAR看看
m_no.Format(_T("%c%c%c%c%c%c%c%c"),result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7]);
//////////////////////////
直接这样做好了
result[8] = 0x00;
m_no = resoult;
//或者
result[8] = 0x00;
MultiByteToWideChar(CP_ACP,0,result,8,m_no,8);
MultiByteToWideChar(CP_ACP,0,(LPSTR)result,-1,m_no,sizeof(resout));
//获取转换后的长度
int len = MultiByteToWideChar(CP_ACP,0,(const char*)result,-1,0,0);
TCHAR* aa = new TCHAR[len + 1]; //分配内存
ZeroMemory(aa, len + 1);
MultiByteToWideChar(CP_ACP,0,(const char*)result,-1,aa,len);
m_NO=aa;
。。。。
delete [] aa;
aa = NULL;