我用MFC写了一个小小的socket编程,发送请求到服务器,但是服务器要求的编码是utf-8的,请教一下,怎么在字符串发送前转成utf-8格式啊,要发送的字符串都是CString格式的CString str("");
CString strRecv2("");
char strRecv[2048]; //用于接收文本
ClientSocket.Send(in,strlen(in), 0);
while(true)
{
ClientSocket.Receive(strRecv,2048);
str = strRecv;
strRecv2 = strRecv2 + str;
if(strRecv2.Find("</DES>") != -1) //截取接收流
{
break;
}
}
ClientSocket. Close();
SOCKET里面有没有直接的方法转为UTF-8直接发送啊,
如果一定要自己写的话,给个指导吧
CString strRecv2("");
char strRecv[2048]; //用于接收文本
ClientSocket.Send(in,strlen(in), 0);
while(true)
{
ClientSocket.Receive(strRecv,2048);
str = strRecv;
strRecv2 = strRecv2 + str;
if(strRecv2.Find("</DES>") != -1) //截取接收流
{
break;
}
}
ClientSocket. Close();
SOCKET里面有没有直接的方法转为UTF-8直接发送啊,
如果一定要自己写的话,给个指导吧
{
CString strTemp;
strScr.TrimLeft( "\ " ");
strScr.TrimRight( "\ " ");
CString strEncodingUrl;
WCHAR Buffer[1000];
int cchWideChar=1000,iLen;
iLen = MultiByteToWideChar(CP_ACP,NULL,strScr,-1,Buffer,cchWideChar);
if(0 == iLen)
{
LogMsg( "MultiByteToWideChar Error: " + strUrl);
return " ";
}
char cBuffer[2000];
iLen = WideCharToMultiByte(65001,NULL,Buffer,-1,cBuffer,2000,NULL,NULL);
if(0 == iLen)
{
LogMsg( "WideCharToMultiByte Error ");
return " ";
}
for(int i=0;i <iLen-1;i++)
{
if( 0x80 <= (UCHAR)cBuffer[i] )
{
strTemp.Format( "%%%.2X ",(UCHAR)cBuffer[i]);
strEncodingUrl += strTemp;
}
else
strEncodingUrl += cBuffer[i];
}
strEncodingUrl.Replace( " ", "+ ");
return strEncodingUrl;
}
WideCharToMultiByte