Ersatz für fehlerhafte HtmlEncode-Funktion

Die Methoden HttpServerUtility.HtmlEncode und HttpUtility.HtmlEncode im .NET-Framework 1.1 sind fehlerhaft implementiert.

Ich verwende als Alternative folgende Funktion:

Function HtmlSpecialChars(ByVal s As String) As String
  Dim sb As New System.Text.StringBuilder(s)
  Return sb.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("""", "&quot;").Replace("'", "&#39;").ToString
End Function

Dabei wird > lediglich aus Symmetriegründen maskiert. Minimal und dennoch sicher ist deshalb diese Variante:

Function HtmlSpecialChars(ByVal s As String) As String
  Dim sb As New System.Text.StringBuilder(s)
  Return sb.Replace("&", "&amp;").Replace("<", "&lt;").Replace("""", "&quot;").Replace("'", "&#39;").ToString
End Function

HttpUtility.HtmlAttributeEncode maskiert ausschließlich die Zeichen ", & und <. Das ist genau dann hinreichend, wenn " als Begrenzer von Attributwerten verwendet wird. Dafür gibt es aber selten eine Garantie, und deshalb halte ich auch diese Funktion für unbrauchbar.