C#で使用するHTMLのテキストをエスケープするにはどうすればよいですか?私はやってみたいです
sample="<span>blah<span>"
そして持っている
<span>blah<span>
hTMLのタグ部分のみで、何とかではなくプレーンテキストとして表示されます:(。ASPではなくC#を使用
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
また、System.Web
アセンブリを使用したくない場合は、これを使用できます。
var encoded = System.Security.SecurityElement.Escape(unencoded)
この記事 ごとに、System.Security.SecurityElement.Escape()
とSystem.Web.HttpUtility.HtmlEncode()
の違いは、前者もアポストロフィ(')
文字をエンコードすることです。
.NET 4以降を使用していて、System.Web
を参照したくない場合は、System
から WebUtility.HtmlEncode
を使用できます。
var encoded = WebUtility.HtmlEncode(unencoded);
これはHttpUtility.HtmlEncode
と同じ効果があり、System.Security.SecurityElement.Escape
よりも優先されるべきです。
aSP.NET 4.0にはこれを行う新しい構文がありますが、まだ誰も言及していません。の代わりに
<%= HttpUtility.HtmlEncode(unencoded) %>
あなたは単にできる
<%: unencoded %>
.NET 4.0以降:
using System.Web.Security.AntiXss;
//...
var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);
実際のhtmlタグ<xmp>
および</xmp>
を使用して、xmpタグの間にあるすべてのタグを表示するように文字列をそのまま出力できます。
または、サーバーでServer.UrlEncode
またはHttpUtility.HtmlEncode
を使用することもできます。
ここに表示されませんでした
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
このようにhtmlを処理するときに機能したのは(asp 4.0+)だけでした。 '
はhtmlで'
(htmldecodeを使用)としてレンダリングされ、失敗します。
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
htmlEncodeによって削除されず、EdgeやIEに”や”のように正しく表示されない特別な引用符があります。これらの文字を次のような関数で置き換えることができます。
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}