ASP.NET HttpUtility.HtmlEncode如何修改WhiteList字符

时间:2012-12-31 16:53:54

标签: asp.net

我有一个像这样的字符列表:

白名单:“ABCDEFGHIJKLMNOPQRSTUVQXYZ&,;”()@ $%​​ - _ +。“

我想编写一个函数,对除了这些字符之外的字符串中的所有字符进行编码。

2 个答案:

答案 0 :(得分:1)

如果您确实想要更改HttpUtility.HtmlEncode的功能,则需要创建自己的HttpEncoder

HttpEncoder Class - 备注部分介绍如何设置您的网站,以便HttpEncoderHttpUtility默认使用HttpServerUtilityHttpResponseHeader

修改

为了回应“我可以修改HttpUtility中的白名单字符吗?”

没有。内部默认HttpEncoder调用WebUtility.HtmlEncode的实现,后者又调用WebUtility.IndexOfHtmlEncodingChars。此方法使用一组硬编码值,因此您无法修改白名单字符。您需要编写自己的HttpEncoder类。

答案 1 :(得分:0)

说实话,我认为这是一个非常糟糕的主意,但仅仅是为了挑战......

Public Function fnsHTMLEncodeExcept(pvsStringToEncode As String, pvsCharactersNotToEncode As String) As String
    Dim voEncodedString As New Text.StringBuilder

    For viPosition As Integer = 0 To (pvsStringToEncode.Length - 1)
        Dim vsChar As String = Mid(pvsStringToEncode, viPosition, 1)
        If InStr(pvsCharactersNotToEncode, vsChar) > 0 Then voEncodedString.Append(vsChar) Else voEncodedString.Append(HttpUtility.HtmlEncode(vsChar))
    Next
    Return voEncodedString.ToString
End Function

然而,我没有IDEA你将如何进行Html解码...我不会理会为什么你需要这种功能。