我用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直接发送啊,
如果一定要自己写的话,给个指导吧

解决方案 »

  1.   

    EncodeUTF8(CString   strScr) 

    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