C#でHTMLのテキストをエスケープするにはどうすればよいですか?私はやってみたいです
sample="<span>blah<span>"
そして持っている
<span>blah<span>
html :(。ASP。ではなくC#を使用するタグ部分がある場合にのみ、何の問題もなくプレーンテキストとして表示されます。
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()
前者はまた、アポストロフィコードすることがある(')
文字が。
SecurityElement.Escape()
エスケープは言うまでもありません。
.NET 4以降を使用していて、参照したくないSystem.Web
場合はWebUtility.HtmlEncode
、System
var encoded = WebUtility.HtmlEncode(unencoded);
これはと同じ効果がHttpUtility.HtmlEncode
あり、を優先する必要がありますSystem.Security.SecurityElement.Escape
。
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
これはここにはありませんでした
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("“", "\""));
}