【问题标题】:Winforms Webbrowser Control and Character EncodingWinforms Webbrowser 控制和字符编码
【发布时间】:2020-08-27 11:54:55
【问题描述】:

我正在尝试使用 Winforms WebBrowser 控件来显示可以使用多种不同语言的网页。在一个示例中,我有一个包含波斯语字符的 HTML 文件(示例不限于此,但该文件可以包含蒙古语、日语或任何其他语言)。

当我在WebBrowser 控件中尝试Navigate() 到此文件时,它显示为一堆乱码(例如ÓÇÚÊ)。但是,如果我在 Firefox 中显示相同的文件,它将正确显示所有预期的字符(例如,ساعت)。我还可以在 Notepad++ 中加载原始 HTML 文件,它似乎可以自动检测正在使用的字符集/编码。

我已经阅读了许多讨论设置WebBrowser 编码的主题:

webBrowser.Document.Encoding = "UTF-8"

但是给定一组 HTML 文件,我无法知道它是用什么语言编写的,因此无法知道编码。我还可以确认 HTML 源代码中没有指定任何编码的“元”标签。

在 Firefox 和 Notepad++ 的幕后有什么魔法可以检测正确的字符集吗?如果有,怎么做?谁能告诉我如何让WebBrowser 控件以类似的方式运行?

【问题讨论】:

标签: c# .net


【解决方案1】:

正如@Bizan 所指出的,在没有元标记来描述编码的情况下,现代浏览器似乎以use heuristics 来确定语言编码。

由于WebBrowser 控件基于过时的 Internet Explorer 技术,因此似乎没有内置逻辑可以自动执行这些启发式方法。

解决办法是:

  • 实现你自己的启发式方法,然后set the encoding manually

  • 使用WebView 控件(如@PanagiotisKanavos 所述),它似乎使用最新的Edge 浏览器。我已经在 Edge 中测试了这些页面,它们可以正常工作。但是,WebView 的最低要求是 Windows 10,这将排除您需要软件在早期版本的 Windows 上运行的任何用例。

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 2012-06-14
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多