缺少Html实体解码支持在C#WPF中使用BY NAME获取特殊字母/字符

时间:2012-06-26 13:03:34

标签: c# .net wpf html-entities

我在解码HTML实体时遇到问题。我尝试过使用

System.Net.WebUtility.HtmlDecode()

并且希望它只是因为这是HttpUtilities的轻量级版本,我已经尝试了

HttpUtility.HtmlDecode()

我的问题是我需要从实体名称解码,而不是实体编号。 (参见此列表http://www.w3schools.com/tags/ref_entities.asp

前面提到的两种方法都与实体编号进行解码,而非实体编号。

1 个答案:

答案 0 :(得分:2)

我真的没有看到你的问题。如果我通过WebUtility.HtmlDecode测试解码,则您发布的链接中列出的所有实体名称都会被解码:

var encoded = ""'&<>¡¢£¤" +
              "¥¦§¨©ª«¬­®" +
              "¯°±²³´µ¶·" +
              "¸¹º»¼½¾¿" +
              "×÷ÀÁÂÃÄÅ" +
              "ÆÇÈÉÊËÌÍ" +
              "ÎÏÐÑÒÓÔÕ" +
              "ÖØÙÚÛÜÝÞ" +
              "ßàáâãäåæ" +
              "çèéêëìíî" +
              "ïðñòóôõö" +
              "øùúûüýþÿ";
var expected = "\"'&<>¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿×÷ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓ" +
                "ÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ";

Console.WriteLine(System.Net.WebUtility.HtmlDecode(encoded) == expected);

这个小片段产生了真实。

说到编码:实现HtmlEncode函数就是这样工作的。你可以做的很少,除了自己实现它,我不推荐(如果你真的不需要,不要重新发明轮子)。另请参阅有关编码的这个问题:C# HtmlEncode - ISO-8859-1 Entity Names vs Numbers