C#でHTML文字をデコードするにはどうすればよいですか?


397

HTML文字エンティティでエンコードされたメールアドレスがあります。それらをプレーン文字列に変換できるものは.NETにありますか?

回答:


618

使用できます HttpUtility.HtmlDecode

.NET 4.0+を使用WebUtility.HtmlDecodeしている場合は、System.Net名前空間で使用できるため、追加のアセンブリ参照を必要としないものも使用できます。


1
System.Webにあるはずですが、ありません。私は1年以上C#に触れていません。これに少し不満を感じたら、手動で変換します。
Vasil

1
System.Webの.NET 2.0バージョンに含まれています
Mark Cidade

1
System.Webを使用しています。私のコンテキストでは、その名前空間にはいくつかのAspPermissionクラスしかありません。
Vasil

17
プロジェクトプロパティにSystem.Web.Dllへの参照を追加します。表示されるクラスは、デフォルトで参照されるSystem.dllにあります。
OwenP 2008

11
クエリ文字列をデコードしようとしている場合は、使用する必要がありますHttpUtility.UrlDecode
PeterX

189

.Net 4.0の場合:

System.Net.WebUtility.HtmlDecode()

C#プロジェクトのアセンブリを含める必要はありません


6
HttpUtilityは「'」をデコードしないため、これはより良いソリューションです。シンボル..
なぜだか

これは、ユニバーサルWindowsプラットフォーム用の開発に必要です。
matthewsheets 2015年

これにより、.Net WebページでXSSが発生しますか?
Senura Dissanayake 2018

43

@CQが言うように、あなたが使用する必要がHttpUtility.HtmlDecodeを、それはデフォルトでは非ASP .NETプロジェクトでは利用できません。

非ASP .NETアプリケーションの場合、への参照を追加する必要がありますSystem.Web.dll。ソリューションエクスプローラーでプロジェクトを右クリックし、[参照の追加]を選択して、リストを参照しますSystem.Web.dll

参照が追加されたので、完全修飾名を使用してメソッドにアクセスできるようになるSystem.Web.HttpUtility.HtmlDecodeか、usingステートメントを挿入してSystem.Web簡単にできるようになります。



7

Server.HtmlDecodeHTMLエンティティをデコードするために使用します。HTML をエスケープしたい場合、つまり、<and >文字をユーザーに表示するには、を使用しますServer.HtmlEncode


4
サーバーコンテキストがない可能性があります(つまり、テストケースなどを実行している場合)前にこのトラップに陥りました:)
Rob Cooper

7

HTMLをデコードするには、コードの下を見てください

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

出力は

 Svendborg Værft A/S

2
HtmlDecodeが文字列を返すため、 'ToString()'は冗長です
Justin

6

また、私と同じようにHtmlAgilityPackを使用している場合は、を使用する必要があることにも言及する価値がありますHtmlAgilityPack.HtmlEntity.DeEntitize()。a stringを取り、を返しますstring


1

パラメータとして文字列を受け取り、デコードされたHTML文字列を返すユーティリティクラスに静的メソッドを書き込みます。

using System.Web.HttpUtilityクラスに含める

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

           return HttpUtility.HtmlDecode(text);
        }else{

         return text;
        }

    }

1

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

0

&#x20;を含む文字列の場合 文字列を二重にデコードする必要がありました。最初のデコードはそれを2番目のパスに変換し、予期した文字に正しくデコードします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.