其次当ReadString读取后进行转换,如下
CInternetSession httpSession; CString url; CString html; m_url.GetWindowText(url); m_html.GetWindowText(html); CHttpFile* htmlFile = (CHttpFile*) httpSession.OpenURL("http://www.cnki.net/KCMS/detail/detail.aspx?dbcode=CDFD&QueryID=8&CurRec=1&dbname=CDFDLAST2011&filename=1011095008.nh&urlid=&yx=&uid=WEEvREcwSlJHSldSdnQ1V05QSXlrTG5xNTFkeHU5SUVpeW9SUk1rK2hWblhYeVRwRWNhWjlpeGNNUml1engwPQ=="); //CString content; CString str; WCHAR *temp; while (htmlFile->ReadString(str)) { //ConvertUTF8toGB2312(content,CP_UTF8,CP_ACP ); char *pStr = str.GetBuffer(str.GetLength()); //取得str对象的原始字符串 int nBufferSize = MultiByteToWideChar(CP_UTF8, 0, pStr, -1, NULL, 0); //取得所需缓存的多少 wchar_t *pBuffer = (wchar_t*)malloc(nBufferSize * sizeof(wchar_t));//申请缓存空间 MultiByteToWideChar(CP_UTF8, 0, pStr, -1 , pBuffer, nBufferSize*sizeof(wchar_t));//转码 //MessageBoxW(NULL, pBuffer, L"Text", MB_OK); //显示 html+=pBuffer; free(pBuffer); //释放缓存 //MessageBox(content); } m_html.SetWindowText(html); htmlFile->Close(); httpSession.Close();这里的网址是中国知网的学位论文网页,其charset是UTF-16,进行转换后也可以正常显示