您可能不了解的 QueryString-UrlEncode 与 UrlPathEncode 的区别

作者:vkvi 来源:ITPOW(原创) 日期:2012-6-25

System.Web.HttpUtility.UrlEncode 与 System.Web.HttpUtility.UrlPathEncode 两个的区别从微软官方的解释来说让人莫名其妙:对 URL 字符串进行编码;对 URL 字符串的路径部分进行编码。

下面用示例加白话进行一些区别解释:

示例

结果

http%3a%2f%2fwww.itpow.com%2f%e6%90%9c%2f%3fq%3d%e5%8d%83%e4%b8%80%e7%bd%91%e7%bb%9c
http://www.itpow.com/%e6%90%9c/?q=ITPOW
%e5%8d%83%e4%b8%80%e7%bd%91%e7%bb%9c+%26%22
%e5%8d%83%e4%b8%80%e7%bd%91%e7%bb%9c%20&"

根据结果,我们可以得出两个区别

一是在 UrlEncode 看来,传入的参数是 QueryString 的参数值,都需要编码;而 UrlPathEncode 只编码 Url 的路径部分,不编码 QueryString 部分,如果传入的参数不像一个 URL,那么就当作 Url 的路径部分。

二是特殊字符对待上的区别,UrlEncode 将空格编码为 +,&、" 分别编码为 %26、%22;而 UrlPathEncode 则编码空格为 %20,&、" 却不编码。

用途

UrlEncode 主要是用于对 QueryString 的参数值进行编码。

相关文章