socket编程,recv接收到乱码?recv(client,msg,102400,0)CString strstr.Format(%s,msg)当客户端发的是
socket编程,recv接收到乱码?
recv(client,msg,102400,0);
CString str;
str.Format("%s",msg);
当客户端发的是中文时,str里面有乱码,请问怎么解决
[解决办法]
[解决办法]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();
}