2009-08-03 3 views
4

J'utilise Server.HTMLEncode pour encoder mon code HTML.Limitations ASP.NET Server.HtmlEncode

Je remarque qu'il n'échappe pas aux guillemets simples, ce qui est une limitation si vous utilisez des guillemets simples dans votre HTML par exemple. <input type='text' .... />

(J'ai vérifié que c'est XHTML valide).

Y a-t-il d'autres limitations ou choses à noter à propos de Server.HTMLEncode, en particulier des caractères qui ne sont pas XHTMl valides et auxquels cette méthode ne répond pas?

Répondre

10

MSDN says Server.HTMLEncode ne fait que ce qui suit:

  • Le moins que le caractère (<) est converti en & lt;.
  • Le caractère supérieur (>) est converti en & gt;. Le caractère commercial (&) est converti en & amp;
  • Le caractère guillemet (") est converti en & quot;.
  • Tout caractère de code ASCII dont le code est plus grand ou égal à 0x80 est converti en & numéro # <>, où le numéro est le caractère ASCII valeur.
0

Je l'ai testé HtmlEncode contre tous les codes de caractères listsed ici http://www.ascii.cl/htmlcodes.htm

il semble qu'il échappe la plupart des personnages, et ceux qu'il dosn't évasion DonT break conformité XHTML

0

HTML Encode doit s'assurer que tous les caractères non HTML d'une chaîne sont convertis en leur entité équivalente. Comme vous l'avez découvert, les guillemets simples sont parfaitement valables en (X) HTML et ne nécessitent pas d'encodage. Vous pouvez utiliser UrlEncode/UrlDecode si vous le souhaitez, ou lancez votre propre fonction en utilisant Remplacer.

0

Je suis venu ici à la recherche de la même réponse. Dans mon cas, la solution était en fait ... utiliser des guillemets doubles dans votre code HTML .. environnante

0

Pour inclure le codage de guillemet simple, je l'utilise (en VB.Net):

Server.HTMLEncode("Here's a string with a single quote").Replace("'", "&#39;") 
Questions connexes