C++,Web浏览器控件:无法更改编码/字符集

C++,Web浏览器控件:无法更改编码/字符集

问题描述:

我正在C++应用程序中托管的Web浏览器ActiveX控件中显示一个文档。这个文档有一个META标签,它指定了不正确的字符集,所以输出很有趣。我知道正确的编码,并想通过编程来修改它。但无论我尝试,编码保持不变。C++,Web浏览器控件:无法更改编码/字符集

我alredy尝试,以各种组合和口味:

  • IHTMLDocument2::put_Charset(后文档加载完成);
  • 更改“META”标记的“字符集”属性(使用IHTMLMetaElement);
  • 完全删除“META”标签(将其“outerHTML”设置为空字符串);
  • 刷新控件。

该控件在保留不正确的编码方面表现出卓越的持久性。我的其他选择是什么?我无法操作正在加载的文档的来源。

根据this,如果在致电IHTMLDocument2->put_charset()后致电IWebBrowser->Refresh(),它应该工作。

+0

谢谢,但刷新没有帮助。如果有*没有* meta标签,它的工作原理;如果有*错误*元标记,它什么都不做。 – user38329 2012-01-27 21:42:27

这里是最终的工作:

在 “NavigateComplete2” 浏览器事件的处理程序,

  • 字符集使用charset属性修改,
  • 然后的META标签被抛出通过将其外部HTML设置为空字符串,
  • 然后控件被刷新。

修改这些操作的顺序或省略步骤将使整个操作无效。 MSHTML很挑剔。

试着把designMode财产"On"