Как я могу декодировать символы HTML в C #? - PullRequest
366 голосов
/ 23 сентября 2008

У меня есть адреса электронной почты, закодированные с помощью символов HTML. В .NET есть что-нибудь, что может преобразовать их в простые строки?

Ответы [ 9 ]

590 голосов
/ 23 сентября 2008

Вы можете использовать HttpUtility.HtmlDecode

Если вы используете .NET 4.0+, вы также можете использовать WebUtility.HtmlDecode, для которого не требуется дополнительная ссылка на сборку, поскольку она доступна в пространстве имен System.Net.

182 голосов
/ 14 апреля 2010

В .Net 4.0:

System.Net.WebUtility.HtmlDecode()

Нет необходимости включать сборку для проекта C #

42 голосов
/ 23 сентября 2008

Как говорит @CQ, вам нужно использовать HttpUtility.HtmlDecode , но по умолчанию он недоступен в не-ASP .NET проекте.

Для приложений, не относящихся к ASP .NET, необходимо добавить ссылку на System.Web.dll. Щелкните правой кнопкой мыши свой проект в обозревателе решений, выберите «Добавить ссылку», а затем просмотрите список для System.Web.dll.

Теперь, когда ссылка добавлена, вы сможете получить доступ к методу, используя полное имя System.Web.HttpUtility.HtmlDecode или вставить оператор using для System.Web, чтобы упростить задачу.

16 голосов
/ 23 сентября 2008

Если контекст сервера отсутствует (т. Е. Вы работаете в автономном режиме), вы можете использовать HttpUtility . HtmlDecode .

7 голосов
/ 17 ноября 2016

Для декодирования HTML посмотрите код ниже

string s = "Svendborg Værft A/S";
string a = HttpUtility.HtmlDecode(s);
Response.Write(a);

Вывод как

 Svendborg Værft A/S
7 голосов
/ 23 сентября 2008

Используйте Server.HtmlDecode для декодирования HTML-объектов. Если вы хотите экранировать HTML, то есть отобразить пользователю символы < и >, используйте Server.HtmlEncode.

4 голосов
/ 25 июня 2016

Стоит также отметить, что если вы используете HtmlAgilityPack, как я, вы должны использовать HtmlAgilityPack.HtmlEntity.DeEntitize(). Он принимает string и возвращает string.

1 голос
/ 03 октября 2018

Для .net 4.0

Добавьте ссылку на System.net.dll в проект с помощью using System.Net;, затем используйте следующие расширения

// Html encode/decode
    public static string HtmDecode(this string htmlEncodedString)
    {
        if(htmlEncodedString.Length > 0)
        {
            return System.Net.WebUtility.HtmlDecode(htmlEncodedString);
        }
        else
        {
            return htmlEncodedString;
        }
    }

    public static string HtmEncode(this string htmlDecodedString)
    {
        if(htmlDecodedString.Length > 0)
        {
            return System.Net.WebUtility.HtmlEncode(htmlDecodedString);
        }
        else
        {
            return htmlDecodedString;
        }
    }
1 голос
/ 25 мая 2018

Запись статического метода в некоторый служебный класс, который принимает строку в качестве параметра и возвращает декодированную строку html.

Включите using System.Web.HttpUtility в свой класс

public static string HtmlEncode(string text)
    {
        if(text.length > 0){

           return HttpUtility.HtmlDecode(text);
        }else{

         return text;
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...