读书人

wince串口接收汉字乱码的有关问题

发布时间: 2012-05-11 12:55:37 作者: rapoo

wince串口接收汉字乱码的问题
6410板上装的wince6.0,一个串口程序,界面中文显示正常,当接收字符时也是正常的,但是汉字是乱码,请问应该怎么处理?
接收的函数如下:
OnDataArrivedMsg(WPARAM wParam,LPARAM lParam)
{
//处理收到的数据
int length=(int)lParam;
char *temp=(char*)wParam;//调试时调试窗口temp的内容是正常的汉字
DWORD dwlength;

dwlength = MultiByteToWideChar(CP_ACP, MB_COMPOSITE, temp, -1, 0, 0);
CString tmpstr;
tmpstr.GetBuffer(dwlength); //为转换后保存Unicode字符串分配内存
//从Ansi转换到Unicode字符
MultiByteToWideChar( CP_ACP,MB_COMPOSITE,temp,-1,tmpstr.GetBuffer(dwlength), dwlength);
MessageBox(tmpstr);//弹出的对话框显示乱码和方块

return 0;
}


[解决办法]
先把char类型的数据转成WCHAR类型(即wchar_t类型)的宽字节数据,如果到这一步显示正常的话,那基本上OK了。
[解决办法]
MultiByteToWideChar()函数依赖于系统的 Locale,看你的系统是否在定制的时候把相应的 Locale 加入了。
[解决办法]

探讨

接收中文乱码的问题解决了,把 MultiByteToWideChar(CP_ACP, MB_COMPOSITE, temp, -1, data, dwlength)中CP_ACP参数改为936就行了,原因不是很明白。91program曾经好像发过类似的贴。有清楚的大侠希望能解释一下。谢谢楼上的两位。

读书人网 >WinCE

热点推荐