读书人

进程间管道通信有时会出现部分中文乱

发布时间: 2012-05-29 12:16:00 作者: rapoo

进程间管道通信,有时会出现部分中文乱码,谁有经验的说说?
在vc6.0下,匿名管道通信。

用匿名管道实现进程间同信,类似于QQ聊天界面。两个进程聊天。比如:父进程给子进程发送中文文本。发送文本的时候,一份发送到自己的编辑框控件,一份发送到子进程,然后子进程显示在自己的编辑框中。


可是有时候这个进程说的一句话,在自己这边好好的,到了另一个进程中这句话的最后几个字就变成乱码了。
这是为什么?




[解决办法]
发送文字时,都用unicode编码
[解决办法]
估计数据传错了,应该不是编码的问题,如果两边都用同样的编码
[解决办法]
另一个进程中接受到的汉字有没有半个汉字的情况?
[解决办法]
不要使用流式传输。
使用消息块。
struct
{
unsigned long _size;
WCHAR _szMessage[1];
};
[解决办法]
ReadFile(hReadPipe,recestr,50,&byteread,NULL);//recestr是全局变量
后看看接受到什么?

[解决办法]
ReadFile(hReadPipe,recestr,50,&byteread,NULL);//
你这个‘50’有可能把一个汉字分成2个,一个在这行的尾部,另半个在下行头部,
需要一个子程序来鉴别。
[解决办法]
手打的:

C/C++ code
#define SZ 1BYTE *KillHalfHZ(BYTE *pData,UINT len){    static BYTE HalfHZ=0;    BYTE firstHalf=0;    UINT HalfAt=0;    UINT total=0;    BYTE *copy=0;    BYTE *pTmp=0;//    if(HalfHZ !=0)    {// add last half HZ to new line        copy=new BYTE[len+1+SZ];        memset(copy,0,len+1+SZ);        copy[0]=HalfHZ;        HalfHZ=0;        memcpy(&copy[1],pdata,len);        total=len+1;    }    else    {// keep original        copy=new BYTE[len+SZ];        memset(copy,0,len+SZ);        memcpy(copy,pdata,len);        total=len;           }    pTmp=copy;// check this new line    for(UINT i=0;i<total;i++)    {        if(*pTmp >= 0x80)        {            if(firstHalf==0)            {                firstHalf = *pTmp;                HalfAt = i+1;            }            else            {// has half HZ                 if(i == HalfAt)                {// 1 hz                    firstHalf=0;                                        HalfAt=0;                }                else                {// *pTmp='?'                }            }        }        pTmp++;    }    if(HalfAt == 0)    { // new line no half HZ        copy[total]=0;    }    else if (HalfAt==total)    {// new line has half HZ at end        HalfHZ= firstHalf;        copy[total-1]=0;// sz    }// delete it after use    return copy;}            调用时给原读来的数组和长度,返回后直接使用新产生的copy。BYTE *pstr=KillHalfHZ(pData,len);replace到edit。用完delete []pstr 

读书人网 >VC/MFC

热点推荐