2.3. C#中处理URL

2.3.1. 关于UrlEncode把空格编码为加号"+"而不是%20的问题

默认的HttpUtility.UrlEncode会把空格编码为加号,而不是很多人所期望的%20,导致很多人以为函数出了问题呢。其实,微软官方文档HttpUtility.UrlEncode方法中,已经解释了此问题:

您可以使用 UrlEncode 方法或 UrlPathEncode 方法对 URL 编码。

但是,方法返回不同的结果。UrlEncode 方法将每个空格字符转换为加号 (+) 字符。

UrlPathEncode 方法将每个空格字符转换为字符串 "%20",它表示一个用十六进制表示法表示的空格。

在对 URL 的路径部分编码时使用 UrlPathEncode 方法,以保证一致的已解码 URL,与执行解码的平台或浏览器无关。

所以,想要把空格编码为%20,用 UrlPathEncode 即可。