首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

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

2012-05-11 
wince串口接收汉字乱码的问题6410板上装的wince6.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曾经好像发过类似的贴。有清楚的大侠希望能解释一下。谢谢楼上的两位。

热点排行