【问题标题】:C++, web browser control: cannot change encoding/charsetC ++,Web浏览器控件:无法更改编码/字符集
【发布时间】:2012-01-27 20:55:36
【问题描述】:

我在 C++ 应用程序中托管的 Web 浏览器 ActiveX 控件中显示了一个文档。该文档有一个 META 标签,它指定 incorrect 字符集,所以输出很有趣。我知道正确的编码并希望以编程方式更改它以解决该问题。但无论我尝试什么,编码都保持不变。

我已经尝试过各种组合和口味:

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

该控件在保留错误编码方面表现出非凡的持久性。我还有哪些其他选择?我无法操纵正在加载的文档的来源。

【问题讨论】:

    标签: c++ character-encoding mshtml iwebbrowser2 ihtmldocument2


    【解决方案1】:

    尝试将designMode 属性"On"

    【讨论】:

      【解决方案2】:

      根据this,如果你在调用IHTMLDocument2->put_charset()之后再调用IWebBrowser->Refresh(),它应该可以工作。

      【讨论】:

      • 谢谢,但刷新没有帮助。如果有 no 元标记,它可以工作;如果有 wrong 元标记,它什么也不做。
      【解决方案3】:

      以下是最终奏效的方法:

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

      • 使用 charset 属性修改字符集,
      • 然后 META标签通过将outerHTML设置为空字符串被丢弃,
      • 然后控件被刷新。

      修改这些动作的顺序,或者省略一个步骤,会导致整个操作无效。 MSHTML 很挑剔。

      【讨论】:

        猜你喜欢
        • 2018-01-14
        • 1970-01-01
        • 2016-09-10
        • 2017-06-18
        • 2017-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多