为什么HttpUtility.UrlPathEncode标记为“不使用”?

时间:2013-11-20 10:56:17

标签: asp.net .net urlencode url-encoding

为什么用于.NET 4.5的HttpUtility.UrlPathEncode .NET的文档说明

  

不要使用;仅用于浏览器兼容性。使用UrlEncode。

UrlEncode不会这样做,它会为URL的参数部分编码字符串,而不是路径部分。有没有更好的方法来为路径部分编码字符串,为什么我不应该使用这个函数,这在1.1以后的框架中有用吗?

2 个答案:

答案 0 :(得分:2)

基于MSDN,他们建议使用UrlEncode授权它适用于所有平台和浏览器

  

您可以使用UrlEncode方法或UrlPathEncode方法对网址进行编码。但是,这些方法会返回不同的结果。 UrlEncode方法将每个空格字符转换为加号字符(+)。 UrlPathEncode方法将每个空格字符转换为字符串"%20",它表示十六进制表示法的空格。在对URL的路径部分进行编码时使用UrlPathEncode方法,以保证解码的URL一致,无论哪个平台或浏览器执行解码。

此外,UrlEncode正在使用UTF-8编码,因此如果您使用不同语言(如阿拉伯语)发送查询字符串,则应使用UrlEncode

答案 1 :(得分:0)

如果要编码URL的路径,请使用Uri.EscapeUriStringHttpUtility.UrlEncode用于查询参数,并且也对路径进行斜杠编码。