读书人

socket编程recv接收到乱码?解决办法

发布时间: 2012-05-23 13:44:13 作者: rapoo

socket编程,recv接收到乱码?
recv(client,msg,102400,0);
CString str;
str.Format("%s",msg);
当客户端发的是中文时,str里面有乱码,请问怎么解决

[解决办法]

探讨

引用:

另外你的发送端是怎么写的?

发送端是在IOS下开发的,发送端发送sql语句给服务器,服务器就把sql语句插入数据库。
sql语句是用的 dataUsingEncoding:NSUTF8StringEncoding转换成NSData,再发送

[解决办法]
first convert UTF-8 to widechar, then convert widechar to ANSI.
here is code snippets converting ANSI to UTF-8
CString aaa= "abc ";//CP_ACP CP_UTF8
wchar_t wbuf[128];
ZeroMemory(wbuf,sizeof(wbuf));
int nret=MultiByteToWideChar(CP_ACP,0,aaa,aaa.GetLength()+1,wbuf,sizeof(wbuf)/sizeof(wbuf[0]));
if(nret> 0&&nret <sizeof(wbuf))
{
CFile foutput;
foutput.Open( "c:\\widechar.htm ",CFile::modeCreate|CFile::modeWrite);
foutput.Write(wbuf,nret*2);
foutput.Flush();
foutput.Close();
}
char uft8buf[1024];
BOOL busedefault=false;
nret = WideCharToMultiByte(CP_UTF8,0,wbuf,nret,uft8buf,sizeof(uft8buf),NULL,NULL);
if(nret> 0&&nret <sizeof(uft8buf))
{
CFile foutput;
foutput.Open( "c:\\utf8.htm ",CFile::modeCreate|CFile::modeWrite);
foutput.Write(uft8buf,nret);
foutput.Flush();
foutput.Close();
}

读书人网 >VC/MFC

热点推荐