解决Unicode用CInternetSession抓去网络数据ReadString中文显示乱码的问题

CInternetSession session(_T("HttpClient"));
CHttpFile* pfile = (CHttpFile *)session.OpenURL(url);
DWORD dwStatusCode;

pfile -> QueryInfoStatusCode(dwStatusCode);
if(dwStatusCode == HTTP_STATUS_OK)

 {

         TCHAR cbContent[512];
          while (pfile->ReadString(cbContent, 512))
           {

               // 中文会显示乱码

               AfxMessageBox(cbContent);

               // 编码转换
               int nBufferSize = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)cbContent, -1, NULL, 0);
               wchar_t *pBuffer = new wchar_t[nBufferSize+1];
               MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)cbContent, -1 , pBuffer, nBufferSize*sizeof(wchar_t));               
               // 显示正常

               AfxMessageBox(pBuffer);

              delete[] pBuffer;

           }

}
因为代码选择了unicode字符集,所以这个ReadString参数需要用TCHAR数组保存读取的数据,但事实上ReadString获取的数据并没有转换为Unicode字符,而是直接存储到了TCHAR数字内,所以显示出现乱码,这里需要先将字节进行utf8编码转换