IHTMLDocument в MHTML: неверная кодировка после загрузки с URL - PullRequest
0 голосов
/ 09 апреля 2011

Веб-страница загружается из Интернета в IHTMLDocument без окон для дальнейшей настройки DOM. Все хорошо, за исключением того, что кодировка неверна: независимо от того, какая кодировка объявлена ​​на веб-странице в разделе META, свойство charset в IHTMLDocument всегда выдает «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 голосов
/ 09 апреля 2011

Проблема решена путем перевода IHTMLDocument в режим разработки перед загрузкой :

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

Кодирование сразу после этой модификации.(Но почему? ..)

...