【问题标题】:WPF Displaying malayalam in TextBlockWPF在TextBlock中显示马拉雅拉姆语
【发布时间】:2023-03-31 06:55:01
【问题描述】:

我正在开发一个 WPF 应用程序,以从网页中提取标题栏(语言为马拉雅拉姆语)并显示在 textBlock 上。 我面临的问题是显示文本(马拉雅拉姆字母)被问号/注册徽标类的租船人替换。

如何在 WPF 文本块或文本框中正确呈现马拉雅拉姆字体?

这是 TextBlock 的 XAML 代码

<TextBlock Name="media" TextWrapping="Wrap" />

这里是抓取网站数据的代码

using (WebClient client = new WebClient())
{
    var read = client.OpenRead(url);
    HtmlDocument doc = new HtmlDocument();
    doc.Load(read);
    var title = doc.DocumentNode.SelectSingleNode("//title").InnerText;
    string text = doc.DocumentNode.InnerHtml;

    media.Dispatcher.Invoke(() =>
    {
        media.Text = title + Environment.NewLine;
    });
}

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    我认为您的问题不是在 TextBlock 中显示文本,而是从服务器获取文本。您应该使用正确的编码加载文档,如下所示:

    WebClient client = new WebClient();
    var data = client.DownloadData(url);
    var html = Encoding.UTF8.GetString(data); //use proper encoding
    

    或者尝试使用HtmlAgilityPack

    【讨论】:

    • 我正在使用 HtmlAgilityPack
    • 所以尝试以正确的编码下载/加载数据。编码大概就是这样。
    • 嘿抱歉,回复此评论为时已晚,我已经创建了一个功能来按照你说的做,它实际上运行良好。现在我面临的唯一问题是一些角色。在本文中的一些地理位置“കുമ്പളാംപൊയ്കസര്&#x200d;വീസ്സഹകരണബാങ്കില്&#x200d;താമസമാക്കിയതാമസമാക്കിയകുടുംബംഇന്ന്സമരം”在下载的数据中自动更换。如何解决这个问题?
    • “被替换”是什么意思?换成什么?
    • 我使用了 UTF8,这实际上是正确的编码(只有一种可以部分显示文本),但是一些字母被替换为 #x200d;例如在本文中 = സര്‍വീസ് 我使用了断点,下载的数据“var data”本身就有问题。下载的数据与这些替换不正确。
    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2014-01-26
    • 2013-10-31
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多