Comment échapper du texte pour une utilisation en HTML en C#? Je veux faire
sample="blah"
et avoir
blah
apparaître en tant que texte brut au lieu de seulement blah avec les balises faisant partie du HTML :(. Utilisation de C#, pas ASP
Comment échapper du texte pour une utilisation en HTML en C#? Je veux faire
sample="blah"
et avoir
blah
apparaître en tant que texte brut au lieu de seulement blah avec les balises faisant partie du HTML :(. Utilisation de C#, pas ASP
Si vous voulez également encoder les caractères unicode en non-unicode, consultez ceci : stackoverflow.com/questions/82008/…
Quelque chose que vous ne voulez pas découvrir de la mauvaise manière : La méthode ci-dessus ne permet pas d'échapper aux caractères de contrôle par elle-même. Voir la réponse acceptée ici: stackoverflow.com/a/4501246/1543677 et utiliser les deux.
Aussi, vous pouvez utiliser ceci si vous ne voulez pas utiliser l'assemblée System.Web
:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Conformément à cet article, la différence entre System.Security.SecurityElement.Escape()
et System.Web.HttpUtility.HtmlEncode()
est que le premier encode également les caractères apostrophe (')
.
Si vous utilisez .NET 4 ou une version ultérieure et que vous ne voulez pas référencer System.Web
, vous pouvez utiliser WebUtility.HtmlEncode
de System
var encoded = WebUtility.HtmlEncode(unencoded);
Cela a le même effet que HttpUtility.HtmlEncode
et devrait être préféré à System.Security.SecurityElement.Escape
.
Pourquoi devrait-il être préféré à SecurityElement.Escape? Y a-t-il des vulnérabilités dans ce dernier, ou est-ce que le premier est simplement plus performant?
@Travis Il n'y a aucune vulnérabilité dans les deux, c'est juste que SecurityElement.Escape
fonctionne sur XML et HtmlEncode
fonctionne sur HTML, et le codage XML et HTML ont des exigences légèrement différentes (voir cette réponse pour plus de détails). Ainsi, par exemple, SecurityElement.Escape
est autorisé à utiliser '
, tandis que HtmlEncode
ne l'est pas.
En ASP.NET 4.0, il y a une nouvelle syntaxe pour faire cela. Au lieu de
<%= HttpUtility.HtmlEncode(non_encodé) %>
vous pouvez simplement faire
<%: non_encodé %>
En savoir plus ici:
Nouvelle syntaxe <%: %> pour encoder la sortie HTML en ASP.NET 4 (et ASP.NET MVC 2)
J'ai rendu la question plus claire. Je ne veux pas que les balises fassent partie du html car l'utilisateur peut faire et la casser.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.