Отсутствует поддержка декодирования HTML-сущностей по имени в C# WPF для специальных букв / символов
У меня проблема с декодированием HTML-сущностей. Я пробовал использовать оба
System.Net.WebUtility.HtmlDecode()
И в надежде, что это было просто потому, что это была облегченная версия HttpUtilities, я попробовал
HttpUtility.HtmlDecode()
Также.
Моя проблема заключается в том, что мне нужно декодировать имена сущностей, а не номера сущностей. (см. этот список http://www.w3schools.com/tags/ref_entities.asp )Оба вышеупомянутых метода декодируют В и из чисел сущностей, а не из имен сущностей.
1 ответ:
Я действительно не вижу вашей проблемы. Если я протестирую декодирование через
WebUtility.HtmlDecode
, Все имена сущностей, которые перечислены в ссылке, которую вы разместили, будут декодированы:var encoded = ""'&<>¡¢£¤" + "¥¦§¨©ª«¬­®" + "¯°±²³´µ¶·" + "¸¹º»¼½¾¿" + "×÷ÀÁÂÃÄÅ" + "ÆÇÈÉÊËÌÍ" + "ÎÏÐÑÒÓÔÕ" + "ÖØÙÚÛÜÝÞ" + "ßàáâãäåæ" + "çèéêëìíî" + "ïðñòóôõö" + "øùúûüýþÿ"; var expected = "\"'&<>¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿×÷ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓ" + "ÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ"; Console.WriteLine(System.Net.WebUtility.HtmlDecode(encoded) == expected);
Этот небольшой фрагмент дает истину.
Когда речь заходит окодировании : функция
HtmlEncode
реализуется именно так. Вы мало что можете сделать с этим, кроме как реализовать его самостоятельно, что я бы не рекомендовал (не изобретайте велосипед, если вам это действительно не нужно). Смотрите также этот так называемый вопрос относительно кодировка: C# HtmlEncode-ISO-8859-1 имена сущностей vs числа