web-dev-qa-db-ja.com

HTMLのエスケープテキスト

C#で使用するHTMLのテキストをエスケープするにはどうすればよいですか?私はやってみたいです

sample="<span>blah<span>"

そして持っている

<span>blah<span>

hTMLのタグ部分のみで、何とかではなくプレーンテキストとして表示されます:(。ASPではなくC#を使用

129
user34537
using System.Web;

var encoded = HttpUtility.HtmlEncode(unencoded);
177

また、System.Webアセンブリを使用したくない場合は、これを使用できます。

var encoded = System.Security.SecurityElement.Escape(unencoded)

この記事 ごとに、System.Security.SecurityElement.Escape()System.Web.HttpUtility.HtmlEncode()の違いは、前者もアポストロフィ(')文字をエンコードすることです。

81
Tereza Tomcova

.NET 4以降を使用していて、System.Webを参照したくない場合は、Systemから WebUtility.HtmlEncode を使用できます。

var encoded = WebUtility.HtmlEncode(unencoded);

これはHttpUtility.HtmlEncodeと同じ効果があり、System.Security.SecurityElement.Escapeよりも優先されるべきです。

43
Alex

aSP.NET 4.0にはこれを行う新しい構文がありますが、まだ誰も言及していません。の代わりに

<%= HttpUtility.HtmlEncode(unencoded) %>

あなたは単にできる

<%: unencoded %>

詳細はこちら: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net- 4-and-asp-net-mvc-2.aspx

19
Nacht

.NET 4.0以降:

using System.Web.Security.AntiXss;
//...
var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);
5
Victor

実際のhtmlタグ<xmp>および</xmp>を使用して、xmpタグの間にあるすべてのタグを表示するように文字列をそのまま出力できます。

または、サーバーでServer.UrlEncodeまたはHttpUtility.HtmlEncodeを使用することもできます。

5
Andrew Siemer

ここに表示されませんでした

System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")

このようにhtmlを処理するときに機能したのは(asp 4.0+)だけでした。 &apos;はhtmlで'(htmldecodeを使用)としてレンダリングされ、失敗します。

<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It&apos;s Allstars'); return false;">It's Allstars</a>
1
Contra

htmlEncodeによって削除されず、EdgeやIEに”や”のように正しく表示されない特別な引用符があります。これらの文字を次のような関数で置き換えることができます。

private string RemoveJunkChars(string input)
{
    return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}
0
Iman Abidi