MHTML的IHTMLDocument:从URL加载后不正确的字符集

时间:2011-04-09 13:20:55

标签: windows mshtml ihtmldocument2

在无窗口的IHTMLDocument中从Internet加载网页,以便将来调整DOM。一切都很好,除了charset是错误的:无论在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);

为什么编码错误,我该怎么做?感谢。

1 个答案:

答案 0 :(得分:0)

在加载之前将IHTMLDocument置于设计模式中解决了问题:

hr = pDoc->put_designMode(L"On");   

此修改后编码正好。 (但为什么?..)