网页从 Internet 加载到无窗口的 IHTMLDocument 中,以供将来调整 DOM。一切都很好,除了 charset 错误:无论 META 部分的网页中宣传的 charset 是什么,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);
为什么编码错误,我该如何使它正确?谢谢。