当前位置: 代码迷 >> WinCE >> wince串口接收汉字乱码的有关问题
  详细解决方案

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

热度:22   发布时间:2016-04-28 13:05:54.0
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曾经好像发过类似的贴。有清楚的大侠希望能解释一下。谢谢楼上的两位。
  相关解决方案