8
为什么.NET的文档HttpUtility.UrlPathEncode用于.NET 4.5状态为什么HttpUtility.UrlPathEncode标记为“不使用”?
不要使用;仅用于浏览器兼容性。使用UrlEncode。
UrlEncode不会做同样的事情,它会为URL的参数部分编码字符串,而不是路径部分。有没有更好的方法来编码路径部分的字符串,为什么我不应该使用这个函数,它在1.1以后的框架中工作?
为什么.NET的文档HttpUtility.UrlPathEncode用于.NET 4.5状态为什么HttpUtility.UrlPathEncode标记为“不使用”?
不要使用;仅用于浏览器兼容性。使用UrlEncode。
UrlEncode不会做同样的事情,它会为URL的参数部分编码字符串,而不是路径部分。有没有更好的方法来编码路径部分的字符串,为什么我不应该使用这个函数,它在1.1以后的框架中工作?
基于MSDN,他们建议使用以UrlEncode来受让人,它正在为所有的平台和浏览器
可以编码具有以UrlEncode方法或UrlPathEncode方法使用的URL。但是,这些方法返回不同的结果。 UrlEncode方法将每个空格字符转换为加号(+)。 UrlPathEncode方法将每个空格字符转换为字符串“%20”,它以十六进制表示法表示一个空格。编码URL的路径部分时使用UrlPathEncode方法,以保证解码的URL一致,无论哪个平台或浏览器执行解码。
而且以UrlEncode使用UTF-8编码,所以如果您要发送不同语言的查询字符串(如阿拉伯语),你应该使用以UrlEncode
“可以用来编码整个URL,包括查询字符串值”。 但UrlEncode不适用于相对URL,至少如果没有参数。它将空格编码为+,并在路径中编码斜杠。 – Dehalion
我猜测.Net检测到路径中的unicode字符受限制/不支持的浏览器,并对它们进行编码以避免出现问题,但我很想知道这个问题。 – Basic