¿Cómo escapo el texto para el uso de HTML en C #? quiero hacer
sample="<span>blah<span>"
y tiene
<span>blah<span>
aparecer como texto sin formato en lugar de bla solo con las etiquetas que forman parte del html :(. Usar C # no ASP
¿Cómo escapo el texto para el uso de HTML en C #? quiero hacer
sample="<span>blah<span>"
y tiene
<span>blah<span>
aparecer como texto sin formato en lugar de bla solo con las etiquetas que forman parte del html :(. Usar C # no ASP
Respuestas:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Además, puede usar esto si no desea usar el System.Web
ensamblaje:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Según este artículo , la diferencia entre System.Security.SecurityElement.Escape()
y System.Web.HttpUtility.HtmlEncode()
es que el primero también codifica (')
caracteres de apóstrofe .
SecurityElement.Escape()
escapes para XML que no es exactamente HTML.
Si está utilizando .NET 4 o superior y no desea hacer referencia System.Web
, puede usar WebUtility.HtmlEncode
desdeSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Esto tiene el mismo efecto que HttpUtility.HtmlEncode
y debería preferirse sobre System.Security.SecurityElement.Escape
.
SecurityElement.Escape
opera en XML y HtmlEncode
opera en HTML, y la codificación XML y HTML tiene requisitos ligeramente diferentes (vea esta respuesta para más detalles). Entonces, por ejemplo, SecurityElement.Escape
está permitido usar '
, mientras HtmlEncode
que no.
nadie ha mencionado aún, en ASP.NET 4.0 hay una nueva sintaxis para hacer esto. en vez de
<%= HttpUtility.HtmlEncode(unencoded) %>
simplemente puedes hacer
<%: unencoded %>
Puede usar etiquetas html reales <xmp>
y </xmp>
generar la cadena como se muestra para mostrar todas las etiquetas entre las etiquetas xmp.
O también puede usar en el servidor Server.UrlEncode
o HttpUtility.HtmlEncode
.
<xmp>
ha quedado en desuso hace mucho tiempo: stackoverflow.com/questions/8307846/… use <pre>
en su lugar
No vi esto aquí
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
fue lo único que funcionó (asp 4.0+) al tratar con html como este. El '
se procesa como '
(usando htmldecode) en el html, lo que hace que falle:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
hay algunos caracteres de comillas especiales que HtmlEncode no elimina y no se mostrarán en Edge o IE correctamente como "y". puede reemplazar estos caracteres con algo como la siguiente función.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}