我在构建一些旧代码时收到警告:
'System.Web.HttpUtility.UrlEncodeUnicode(string)'已过时:'“ This该方法产生不符合标准的输出并具有互操作性问题。首选的替代方法是以UrlEncode(字符串)。“'
用HttpUtility.UrlEncodeUnicode(string)
替换HttpUtility.UrlEncode(string)
是否安全?两种方法都为任何字符串产生identical
结果吗?
如果没有,首选的替代方法是?
<<
基于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检查参考源>
这两种方法对任何字符串都产生相同的结果吗?
否,示例:
HttpUtility.UrlEncodeUnicode("☺"); // %u263a
HttpUtility.UrlEncode("☺") // %e2%98%ba
用HttpUtility.UrlEncode(string)替换HttpUtility.UrlEncodeUnicode(string)是否安全?这取决于解码器,大多数解码器可以处理UrlEncode的结果,如果您的项目使用非标准的项目,那么这是不安全的。 (BTW HttpUtility.UrlDecode
可以处理两个结果。)