標籤:style blog http color os io for ar
最近又在網上找了一些有關MFC抓取網頁代碼的文章看,發現有個比較簡單的代碼,和大家分享下。
CInternetSession session(NULL, 0); CHttpFile* htmlFile = NULL; CString strLine, strHtml; CString url = _T("http://www.tqyb.com.cn/data/gzWeather/gz_weatherForecastInDays.js?"); TCHAR sRecv[1024]; UINT CodePage = 65001;//CP_UTF8:65001 CP_ACP:0 strHtml = _T(""); //擷取網頁源碼 htmlFile = (CHttpFile*)session.OpenURL(url);//重新開啟串連 DWORD dwStatusCode; //接受請求傳回值 htmlFile->QueryInfoStatusCode(dwStatusCode); if (dwStatusCode == HTTP_STATUS_OK) { while (htmlFile->ReadString(sRecv, 1024)) { // 編碼轉換,可解決中文亂碼問題 //gb2312轉為unicode,則用CP_ACP //gbk轉為unicode,也用CP_ACP //utf-8轉為unicode,則用CP_UTF8 int nBufferSize = MultiByteToWideChar(CodePage, 0, (LPCSTR)sRecv, -1, NULL, 0); wchar_t *pBuffer = new wchar_t[nBufferSize + 1]; memset(pBuffer, 0, (nBufferSize + 1)*sizeof(wchar_t)); //gb2312轉為unicode,則用CP_ACP //gbk轉為unicode,也用CP_ACP //utf-8轉為unicode,則用CP_UTF8 MultiByteToWideChar(CodePage, 0, (LPCSTR)sRecv, -1, pBuffer, nBufferSize*sizeof(wchar_t)); strHtml += pBuffer; strHtml += "\r\n"; delete pBuffer; } } htmlFile->Close(); session.Close(); delete htmlFile;
注意了,這個網址代碼格式是UTF8,中文會亂碼,所以加了一個字元之間的轉換,//PageCode = 65001.
而且在設定vs時,字元集要設定成多字元。
項目->屬性->字元集->多位元組字元。