我想把客户端(WINCE)一个CString型的字串通过socket发送到服务端(WIN2000),然后显示出来,因为win ce的字符是UNICODE,而win2k是ASCII,在发送英文时没有问题,但发送中文时出现乱码,因为,我写了下列函数进行转换,想把
UNICODE格式的CString转换成Ascii格式,但在转换时中文还是变成了乱码,请大家帮帮忙?void CStringToChar2(CString m_snd,char *str2)
{
char buf[129]; //发送缓冲区
ZeroMemory(buf,sizeof(buf)); //缓冲区清零
CString tmpstr(m_snd); //复制要发送的字符串
int multibytelen=WideCharToMultiByte( //计算从Unicode转换到Ansi后需要的字节数
        CP_ACP, //根据ANSI code page转换
        WC_COMPOSITECHECK | WC_DEFAULTCHAR, //转换出错用缺省字符代替
        tmpstr.GetBuffer(m_snd.GetLength()), //要转换的字符串地址
-1, //要转换的个数
0, //转换后字符串放置的地址
0, //最多转换字符的个数,为0表示返回转换Unicode后需要多少个字节
0, //缺省的字符:"\0"
0 //缺省的设置
);

WideCharToMultiByte( //转换Unicode到Ansi
CP_ACP,
WC_COMPOSITECHECK | WC_DEFAULTCHAR,
tmpstr.GetBuffer(m_snd.GetLength()),
-1,
buf, //转换到缓冲区中
128, //最多128个字节
0,
0
);

strcpy(str2,buf);
}