默认的HttpUtility.UrlEncode会把空格编码为加号,而不是很多人所期望的%20,导致很多人以为函数出了问题呢。其实,微软官方文档HttpUtility.UrlEncode方法中,已经解释了此问题:
您可以使用 UrlEncode 方法或 UrlPathEncode 方法对 URL 编码。
但是,方法返回不同的结果。UrlEncode 方法将每个空格字符转换为加号 (+) 字符。
UrlPathEncode 方法将每个空格字符转换为字符串 "%20",它表示一个用十六进制表示法表示的空格。
在对 URL 的路径部分编码时使用 UrlPathEncode 方法,以保证一致的已解码 URL,与执行解码的平台或浏览器无关。
所以,想要把空格编码为%20,用 UrlPathEncode 即可。