不同.net框架之间的差异HtmlEncode方法

时间:2016-11-18 13:41:48

标签: asp.net .net

如果有任何差异,那么:

System.Web.HttpUtility.HtmlEncode
System.Web.HttpServerUtility.HtmlEncode
System.Net.WebUtility.HtmlEncode

HttpUtility.HtmlEncode和HttpServerUtility.HtmlEncode都说:

  

要对Web应用程序之外的值进行编码或解码,请使用WebUtility类。

这意味着存在差异,但不会直接说出或说出差异是什么,如果有的话。

1 个答案:

答案 0 :(得分:1)

如果你挖掘source code,你可以轻松地跟随它。

System.Web.HttpUtility.HtmlEncode

    /// <devdoc>
    ///    <para>
    ///       HTML encodes a string and returns the encoded string.
    ///    </para>
    /// </devdoc>
    public static String HtmlEncode(String s) {
        return HttpEncoder.Current.HtmlEncode(s);
    }

System.Web.HttpServerUtility.HtmlEncode

    /// <devdoc>
    ///    <para>
    ///       HTML
    ///       encodes a given string and
    ///       returns the encoded string.
    ///    </para>
    /// </devdoc>
    public string HtmlEncode(string s) {
        return HttpUtility.HtmlEncode(s);
    }

System.Net.WebUtility.HtmlEncode

    public static string HtmlEncode(string value) {
        if (String.IsNullOrEmpty(value)) {
            return value;
        }

        // Don't create string writer if we don't have nothing to encode
        int index = IndexOfHtmlEncodingChars(value, 0);
        if (index == -1) {
            return value;
        }

        StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
        HtmlEncode(value, writer);
        return writer.ToString();
    }

因此System.Web.HttpServerUtility.HtmlEncode实际使用System.Web.HttpUtility.HtmlEncode。如果您深入研究HttpEncoder.Current.HtmlEncode(s);,则会出现以下代码:

    protected internal virtual void HtmlDecode(string value, TextWriter output) {
        WebUtility.HtmlDecode(value, output);
    }

铊;博士

所以他们都是最终,使用System.Net.WebUtility.HtmlEncode。我想System.Web版本只适用于向后兼容性。因此建议使用System.Net版本。