WPF WebBrowser和德语“umlaute”等特殊字符

时间:2011-05-05 19:08:13

标签: c# webbrowser-control diacritics mhtml

我在我的应用中使用WPF WebBrowser控件。我有一个文件(mht),其中包含德语umlaute(äöü)。现在,我用.Navigate(路径)加载此文件,但问题是,这个字符显示不正确。我该如何解决这个问题?

最诚挚的问候,托马斯

4 个答案:

答案 0 :(得分:2)

我用以下方法解决了这个问题:

    static void webBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e) {
        var webBrowser = sender as WebBrowser;
        if(webBrowser == null) {
            return;
        }
        var doc = (IHTMLDocument2)webBrowser.Document;           

        doc.charset = "utf-8";
        webBrowser.Refresh();
    }

答案 1 :(得分:1)

这非常古怪。

  1. 我的解决方案是在我的HTML文件中添加一个显式元标记 - “My Page.html”

    <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>
    
  2. 然后使用标准的Web浏览器.NET控件,我首先创建了一个URI对象。

    webBrowser1.Url = new Uri("My Page.html");
    
  3. 然后使用refresh方法绘制页面。

    webBrowser1.Refresh();
    
  4. 请注意,如果直接使用Navigate方法,则无法获取utf-8指令,但URI和刷新方法会这样做。

    古怪,但它确实有效。

答案 2 :(得分:0)

WebBrowser控件在内部使用Internet Explorer,无论您在本地PC上使用哪个版本。如果你可以解决IE中的问题,它应该在WebBrowser控件中修复。

答案 3 :(得分:0)

今天早上我遇到了这个问题,这让我非常烦恼,直到找到了解决方案:

Stream stream = new MemoryStream(System.Text.Encoding.Default.GetBytes(Content_Of_HTML_File_In_String)));
webBrowser.NavigateToStream(stream);

与上述解决方案相比,您不会期望任何“ COMException”或类似的东西。