繁体   English   中英

Winforms Webbrowser 控制和字符编码

[英]Winforms Webbrowser Control and Character Encoding

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

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

我已经阅读了许多讨论设置WebBrowser编码的线程,如下所示:

webBrowser.Document.Encoding = "UTF-8"

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

Firefox 和 Notepad++ 的幕后是否有一些魔法来检测正确的字符集,如果是,如何检测? 有人能告诉我如何让WebBrowser控件以类似的方式运行吗?

正如@Bizan 指出的那样,在没有描述编码的元标记的情况下,现代浏览器似乎使用启发式方法来确定语言编码。

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

解决方法是:

  • 实现您自己的启发式方法,然后手动设置编码

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM