C # 'daki HTML karakterlerini nasıl çözebilirim?


397

HTML karakter varlıkları ile kodlanmış e-posta adreslerim var. .NET'te düz dizelere dönüştürebilecek bir şey var mı?

Yanıtlar:


618

Kullanabilirsiniz HttpUtility.HtmlDecode

.NET 4.0+ kullanıyorsanız WebUtility.HtmlDecode, System.Netad alanında kullanılabilen ek bir montaj başvurusu gerektirmeyen de kullanabilirsiniz .


1
System.Web'de olması gerekiyordu, ama değil. Bir yıldan fazla bir süredir C # 'a dokunmadım, eğer biraz daha sinirli olursam onları manuel olarak dönüştüreceğim.
— Vasil

1
System.Web'in .NET 2.0 sürümünde
— Mark Cidade

1
System.Web kullanıyorum. Benim bağlamımda bu ad alanının sadece bazı AspPermission sınıfları var.
— Vasil

17
Proje özelliklerinizde System.Web.Dll başvuru ekleyin. Gördüğünüz sınıflar, varsayılan olarak başvurulan System.dll'de canlıdır.
— OwenP

11
Sorgu Dizesini deşifre etmeye çalışıyorsanız, kullanmanız gerekirHttpUtility.UrlDecode
— PeterX

189

Net 4.0'da:

System.Net.WebUtility.HtmlDecode()

C # projesi için derleme eklemeye gerek yok


6
Daha iyi bir çözümdür, çünkü HttpUtility "& apos;" kodunu çözmez sembolü .. Neden bilmiyorum ..
— RredCat

Bu, Evrensel Windows platformu için geliştirilirken gereklidir.
— matthewsheets

Bu, .Net web sayfalarında XSS'ye neden olur mu?
— Senura Dissanayake

43

@CQ'nun dediği gibi, HttpUtility.HtmlDecode kullanmanız gerekir , ancak varsayılan olarak ASP olmayan bir .NET projesinde kullanılamaz.

ASP olmayan bir .NET uygulaması için, bir başvuru eklemeniz gerekir System.Web.dll. Solution Explorer'da projenizi sağ tıklatın, "Add Reference" ı seçin, ardından listeye göz atın.System.Web.dll .

Referans eklendiğine göre, tam nitelikli ad kullanarak yönteme erişebilmeniz System.Web.HttpUtility.HtmlDecodeveya işleri kolaylaştırmak usingiçin bir ifade girebilmeniz gerekir System.Web.



7

Server.HtmlDecodeHTML varlıklarının kodunu çözmek için kullanın . Eğer isterseniz kaçış HTML, yani görüntülemek <ve >kullanıcı, kullanım karakteri Server.HtmlEncode.


4
Bir sunucu bağlamı olmayabilir (yani test senaryoları ve benzerlerini çalıştırırken) Daha önce bu tuzağa düştüm :)
— Rob Cooper

7

HTML kodunu çözmek için kodun altına bir göz atın

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

Çıktı gibi

 Svendborg Værft A/S

2
HtmlDecode bir dize döndürdüğü için 'ToString ()' gereksizdir
— Justin

6

HtmlAgilityPack'i benim gibi kullanıyorsanız, kullanmanız gerektiğini de belirtmek gerekir HtmlAgilityPack.HtmlEntity.DeEntitize(). Bir alır stringve a döndürür string.


1

Dizeyi parametre olarak kabul eden ve kodu çözülen html dizesini döndüren bazı yardımcı program sınıflarına statik yöntem yazın.

using System.Web.HttpUtilitySınıfınıza ekleyin

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

           return HttpUtility.HtmlDecode(text);
        }else{

         return text;
        }

    }

1

.Net 4.0 için

System.net.dllProjeye bir başvuru ekleyin ve using System.Net;ardından aşağıdaki uzantıları kullanın

// 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;
        }
    }

0

& # X20; Dizeyi iki kez çözmek zorunda kaldım. İlk kod çözme işlemi ikinci geçişe dönüştürür ve beklenen karaktere doğru kodunu çözer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.