java http请求发送unicode_c++ 使用httpclient获取网页及utf8与unicode之间转码

CString CHttpClient::doGet(CString href)

{

std::string httpsource;

CInternetSession session1(NULL,0);

CHttpFile* pHTTPFile=NULL;

try{

pHTTPFile=(CHttpFile*)session1.OpenURL(href);

}catch(CInternetException* m_pException){

//捕捉错误,否则在网络不通时进行连接会导致内存问题

pHTTPFile=NULL;

m_pException->m_dwError;

m_pException->Delete();

session1.Close();

return _T("");

}

if(pHTTPFile)

{

char sRecived[2048]={0};//初始化,避免内存问题

pHTTPFile->ReadString((LPTSTR)sRecived,1024);//避免使用CString导致乱码,unicode编码时一个字符用两个字节来编码,第二个参数使用字符数

do

{

httpsource+=sRecived;

memset(sRecived,0,2048);

} while (pHTTPFile->ReadString((LPTSTR)sRecived,1024)>0);

pHTTPFile->Close();

delete pHTTPFile;

delete[] sRecived;

}

session1.Close();

wstring result=UTF8ToUnicode(httpsource);//转码

return result.c_str();

}

std::string CHttpClient::UnicodeToUTF8( const std::wstring& str )

{

char*     pElementText;

int    iTextLen;

// wide char to multi char

iTextLen = WideCharToMultiByte( CP_UTF8,

0,

str.c_str(),

-1,

NULL,

0,

NULL,

NULL );

pElementText = new char[iTextLen + 1];

memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );

::WideCharToMultiByte( CP_UTF8,

0,

str.c_str(),

-1,

pElementText,

iTextLen,

NULL,

NULL );

std::string strText;

strText = pElementText;

delete[] pElementText;

return strText;

}

wstring CHttpClient::UTF8ToUnicode( const string& str )

{

int  len = 0;

len = str.length();

int  unicodeLen = ::MultiByteToWideChar( CP_UTF8,

0,

str.c_str(),

-1,

NULL,

0 );

wchar_t *  pUnicode;

pUnicode = new  wchar_t[unicodeLen+1];

memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));

::MultiByteToWideChar( CP_UTF8,

0,

str.c_str(),

-1,

(LPWSTR)pUnicode,

unicodeLen );

wstring  rt;

rt = ( wchar_t* )pUnicode;

delete  pUnicode;

return  rt;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值