[英]MHTML's IHTMLDocument: incorrect charset after load from URL
從Internet上將網頁加載到無窗口的IHTMLDocument中,以便將來對DOM進行調整。 一切都很好,除了字符集是錯誤的:無論在META部分的網頁上廣告的字符集如何,在加載文檔后,IHTMLDocument的charset屬性總是立即顯示“ Windows-1251”。
當我稍后將修改后的文檔寫出時,由於編碼不匹配,該文件不可讀:文本采用原始編碼,而新文檔中的META字符集標記為“ Windows-1251”。
這是我用來加載文檔的代碼(省略了錯誤處理和清理)。
IHTMLDocument2* pDoc = NULL;
CoCreateInstance(CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER,
IID_IHTMLDocument2, (void**)&pDoc);
IMoniker* pIMoniker = NULL;
CreateURLMonikerEx(NULL, path.c_str(), &pIMoniker, URL_MK_UNIFORM);
IPersistMoniker* pPMk= NULL;
pDoc->QueryInterface(IID_IPersistMoniker, (void **)&pPMk);
IBindCtx *pBCtx = NULL;
CreateBindCtx(0, &pBCtx);
pPMk->Load(FALSE, pIMoniker, pBCtx, STGM_READ|STGM_SHARE_EXCLUSIVE);
為什么編碼錯誤,如何正確設置? 謝謝。
通過在加載之前將IHTMLDocument置於設計模式下解決了問題:
hr = pDoc->put_designMode(L"On");
修改之后,編碼就正確了。 (但為什么?..)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.