0

Web ページは、将来の DOM の微調整のために、インターネットからウィンドウのない IHTMLDocument に読み込まれます。文字セットが間違っていることを除いて、すべて問題ありません。META セクションの Web ページで宣伝されている文字セットに関係なく、IHTMLDocument の文字セット プロパティは、ドキュメントが読み込まれた直後に常に "Windows-1251" になります。

後で変更したドキュメントを書き出すと、エンコーディングの不一致が原因でファイルを読み取ることができません。テキストは元のエンコーディングですが、新しいドキュメントの META charset タグは「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);

エンコーディングが間違っているのはなぜですか?どうすれば正しくなりますか? ありがとう。

4

1 に答える 1

0

ロードする前にIHTMLDocument をデザイン モードにすることで解決された問題:

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

エンコーディングは、この変更の直後です。(しかし、なぜ?..)

于 2011-04-09T14:29:39.530 に答える