Как декодировать HTML символы в C#?



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

749   9  
c#

9 ответов:

можно использовать HttpUtility.HtmlDecode

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

далее .Net версии 4.0:

System.Net.WebUtility.HtmlDecode()

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

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

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

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

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

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

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

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

string s = "Svendborg V&#230;rft A/S";
string a = HttpUtility.HtmlDecode(s).ToString();
Response.Write(a);

выход, как

 Svendborg Værft A/S

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

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

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

           return HttpUtility.HtmlDecode(text);
        }else{

         return text;
        }

    }

для .сети 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;
        }
    }

Comments

    Ничего не найдено.