Wie entkomme ich Text für die Verwendung von HTML in C #? Ich will das tun
sample="<span>blah<span>"
und haben
<span>blah<span>
wird als einfacher Text anstelle von blah nur mit dem Tag-Teil des HTML angezeigt :(. Verwenden von C # nicht ASP
Wie entkomme ich Text für die Verwendung von HTML in C #? Ich will das tun
sample="<span>blah<span>"
und haben
<span>blah<span>
wird als einfacher Text anstelle von blah nur mit dem Tag-Teil des HTML angezeigt :(. Verwenden von C # nicht ASP
Antworten:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Sie können dies auch verwenden, wenn Sie die System.Web
Assembly nicht verwenden möchten :
var encoded = System.Security.SecurityElement.Escape(unencoded)
Gemäß diesem Artikel besteht der Unterschied zwischen System.Security.SecurityElement.Escape()
und System.Web.HttpUtility.HtmlEncode()
darin, dass ersteres auch Apostrophzeichen codiert (')
.
SecurityElement.Escape()
Escape für XML, das nicht genau HTML ist.
Wenn Sie .NET 4 oder höher verwenden und nicht referenzieren möchten System.Web
, können Sie WebUtility.HtmlEncode
von verwendenSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Dies hat den gleichen Effekt wie HttpUtility.HtmlEncode
und sollte vorgezogen werden System.Security.SecurityElement.Escape
.
SecurityElement.Escape
funktioniert nur mit XML und HtmlEncode
HTML, und für XML und HTML-Codierung gelten leicht unterschiedliche Anforderungen ( Einzelheiten finden Sie in dieser Antwort ). So SecurityElement.Escape
darf zum Beispiel verwendet werden '
, während dies HtmlEncode
nicht der Fall ist.
Bisher hat noch niemand erwähnt, dass es in ASP.NET 4.0 eine neue Syntax gibt. anstatt
<%= HttpUtility.HtmlEncode(unencoded) %>
Sie können einfach tun
<%: unencoded %>
Lesen Sie hier mehr: 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
Sie können tatsächliche HTML-Tags verwenden <xmp>
und </xmp>
die Zeichenfolge so ausgeben, wie sie ist, um alle Tags zwischen den xmp-Tags anzuzeigen.
Oder Sie können auch auf dem Server Server.UrlEncode
oder verwenden HttpUtility.HtmlEncode
.
<xmp>
wurde schon vor langer Zeit veraltet: stackoverflow.com/questions/8307846/... Verwendung <pre>
statt
Hab das hier nicht gesehen
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
Es war das einzige, was funktionierte (asp 4.0+), wenn es um HTML wie dieses ging. Das '
wird '
im HTML als (unter Verwendung von HTML-Code) gerendert , was dazu führt, dass es fehlschlägt:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
Es gibt einige spezielle Anführungszeichen, die von HtmlEncode nicht entfernt werden und in Edge oder IE nicht korrekt angezeigt werden, wie "und". Sie können diese Zeichen durch eine der folgenden Funktionen ersetzen.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}