簡體   English   中英

MHTML的IHTMLDocument:從URL加載后的字符集不正確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM