Отсутствует поддержка декодирования HTML-сущностей по имени в C# WPF для специальных букв / символов


У меня проблема с декодированием HTML-сущностей. Я пробовал использовать оба

System.Net.WebUtility.HtmlDecode()

И в надежде, что это было просто потому, что это была облегченная версия HttpUtilities, я попробовал

HttpUtility.HtmlDecode()

Также.

Моя проблема заключается в том, что мне нужно декодировать имена сущностей, а не номера сущностей. (см. этот список http://www.w3schools.com/tags/ref_entities.asp )

Оба вышеупомянутых метода декодируют В и из чисел сущностей, а не из имен сущностей.

1 3

1 ответ:

Я действительно не вижу вашей проблемы. Если я протестирую декодирование через WebUtility.HtmlDecode, Все имена сущностей, которые перечислены в ссылке, которую вы разместили, будут декодированы:

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

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

Этот небольшой фрагмент дает истину.

Когда речь заходит окодировании : функция HtmlEncode реализуется именно так. Вы мало что можете сделать с этим, кроме как реализовать его самостоятельно, что я бы не рекомендовал (не изобретайте велосипед, если вам это действительно не нужно). Смотрите также этот так называемый вопрос относительно кодировка: C# HtmlEncode-ISO-8859-1 имена сущностей vs числа