2013-11-20 57 views
8

为什么.NET的文档HttpUtility.UrlPathEncode用于.NET 4.5状态为什么HttpUtility.UrlPathEncode标记为“不使用”?

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

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

+1

“可以用来编码整个URL,包括查询字符串值”。 但UrlEncode不适用于相对URL,至少如果没有参数。它将空格编码为+,并在路径中编码斜杠。 – Dehalion

+1

我猜测.Net检测到路径中的unicode字符受限制/不支持的浏览器,并对它们进行编码以避免出现问题,但我很想知道这个问题。 – Basic

回答

2

基于MSDN,他们建议使用以UrlEncode来受让人,它正在为所有的平台和浏览器

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

而且以UrlEncode使用UTF-8编码,所以如果您要发送不同语言的查询字符串(如阿拉伯语),你应该使用以UrlEncode

相关问题