|
发表于 2021-1-26 20:06:32
|
显示全部楼层
- /*
- 编译环境 VS2017, 字符集随意
- 很久没写控制台程序,今儿发现控制台输出的中文字符串不能是宽字符,
- 即便项目属性中设置了Unicode字符集,网页源码中的中文也一样会显示问号,刚开始还以为是网页编码的原因
- wprintf_s(_T("%s\n"), _T("中文")); //输出问号
- printf_s("%s\n", "中文"); //正常输出
- */
- #include <windows.h>
- #include <tchar.h>
- #include <atlconv.h>
-
- #pragma comment(lib, "ole32.lib")
- #pragma comment(lib, "oleaut32.lib")
- #import "C:\\Windows\\System32\\WinHttpCom.dll" no_namespace // Win10 不再是 WinHttp.dll 而是 WinHttpCom.dll
-
- int main()
- {
- CoInitialize(0);
-
- IWinHttpRequestPtr http = NULL;
- http.CreateInstance(__uuidof(WinHttpRequest));
- http->Open(_T("Get"), _T("https://www.baidu.com"));
- http->SetRequestHeader(_T("Referer"),_T("https://www.baidu.com"));
- http->Send();
-
- /*_bstr_t _bszHtml;
- _bszHtml = http->GetResponseText();
- OutputDebugString((TCHAR*)_bszHtml.GetBSTR());*/
-
- BSTR bszHtml;
- HRESULT hr = http->get_ResponseText(&bszHtml);
- OutputDebugString((TCHAR*)bszHtml);
-
- // BSTR To ANSIC
- USES_CONVERSION;
- LPSTR lpHtml = OLE2A(bszHtml); //W2A
- printf_s("%Ts", lpHtml);
-
- /*DWORD dwSize = MultiByteToWideChar(CP_ACP, 0, lpHtml, -1, NULL, 0);
- TCHAR *pHtml = new TCHAR[dwSize];
- MultiByteToWideChar(CP_UTF8, 0, lpHtml, -1, pHtml, dwSize);
- wprintf_s(_T("%Ls"), pHtml);
- delete []pHtml;*/
-
- http.Release();
- CoUninitialize();
-
- return 0;
- }
复制代码 |
|