【问题标题】:WebBrowser rendering differences with accentuated textsWebBrowser 呈现与强调文本的差异
【发布时间】:2019-06-20 13:56:56
【问题描述】:

我目前正在使用 Visual Studio 15 在 framework 4.0 下设计一个 C#,其中一个 WebBrowser 对象用于显示一些信息。 当我使用C:\temp\myfile.html 之类的 URL 将文件加载到 WebBrowser 时,一切都完美显示。

当我使用包含与文件完全相同的内容的字符串时,每个重音字符都显示为小丑字符(带问号的菱形...)。

请注意,我在这两种情况下都使用了嵌入式 CSS 规范,但我很确定这不会对我的问题产生任何影响,因为我在有或没有 CSS 部分的情况下进行了测试,结果完全相同。

从文件中设置Html页面的代码是:

webMain.Navigate("about:blank");
while (webMain.Document == null || webMain.Document.Body == null) Application.DoEvents();
if (url != null) webMain.Navigate(url);

用于从字符串设置Html页面的代码是:

webMain.DocumentText = "0";
webMain.Document.OpenNew(true);
webMain.Document.Write(_html);
webMain.Visible = true;
webMain.Refresh();`

我错过了什么?

【问题讨论】:

  • 您可能需要设置正确的编码 - 例如 webMain.Document.Encoding = "UTF-8" 或适用于 _html 字符串中数据的任何编码
  • 当然,不过Html开头有这样一个设置: Champollion 2019
  • 好的,我希望网络浏览器控件能够尊重这一点,但这只是我的猜测。您确定编码与文档内容匹配吗?该文档实际上是 iso-8859-1 而不是 utf-8 或其他代码页
  • 相当肯定:当文件加载到 WebBrowser 对象或实际浏览器(Firefox、IE、Edge、Chrome...)中时,它会正确显示

标签: c# webbrowser-control diacritics html-rendering


【解决方案1】:

最后,经过进一步的努力,问题似乎是由于我创建 Html 字符串的方式:它被存储为嵌入式资源,并且在调用时没有正确解码。 感谢那些试图帮助我的人,问题往往不是我最初想到的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-01
    • 2014-06-14
    • 1970-01-01
    • 2013-10-19
    • 2012-06-13
    • 2011-01-05
    • 2012-10-06
    • 1970-01-01
    相关资源
    最近更新 更多