在构建一些旧代码时我得到了警告:
'System.Web.HttpUtility.UrlEncodeUnicode(string)'已过时:'“ This 该方法产生不符合标准的输出并具有 互操作性问题。首选的替代方法是 UrlEncode(String)。“'
将HttpUtility.UrlEncodeUnicode(string)
替换为HttpUtility.UrlEncode(string)
是否安全?两种方法都能为任何字符串产生相同结果吗?
如果没有,首选的替代方法是什么?
答案 0 :(得分:1)
两种方法对任何字符串都产生相同的结果吗?
否,例如:
HttpUtility.UrlEncodeUnicode("☺"); // %u263a
HttpUtility.UrlEncode("☺") // %e2%98%ba
用HttpUtility.UrlEncode(string)替换HttpUtility.UrlEncodeUnicode(string)是否安全?
几乎是安全的,它取决于解码器,大多数解码器可以处理UrlEncode
的结果,因为它是标准的,如果您的项目使用非标准的,则不安全。 (顺便说一句,HttpUtility.UrlDecode
可以处理两个结果。)
答案 1 :(得分:0)
基于Microsoft Reference Source(具有.NET引用的源代码)。 HttpUtility.UrlEncode(string)
是HttpUtility.UrlEncodeUnicode(string)
的替代方法,如下所示:
[Obsolete("This method produces non-standards-compliant output and has interoperability issues. The preferred alternative is UrlEncode(String).")]
public static string UrlEncodeUnicode(string str) {..} // just removed the code in case of copy-rights.
因此,与UrlEncode(*)
相比,最好使用UrlEncodeUnicode(*)
,您可以从here检查参考源