QueryString-UrlEncode 与 UrlPathEncode 的区别

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

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

示例

Response.Write(System.Web.HttpUtility.UrlEncode("http://www.cftea.com/搜/?q=千一网络"));
Response.Write(Environment.NewLine);
Response.Write(System.Web.HttpUtility.UrlPathEncode("http://www.cftea.com/搜/?q=千一网络"));
Response.Write(Environment.NewLine);
Response.Write(System.Web.HttpUtility.UrlEncode("千一网络 &\""));
Response.Write(Environment.NewLine);
Response.Write(System.Web.HttpUtility.UrlPathEncode("千一网络 &\""));

结果

http%3a%2f%2fwww.cftea.com%2f%e6%90%9c%2f%3fq%3d%e5%8d%83%e4%b8%80%e7%bd%91%e7%bb%9c
http://www.cftea.com/%e6%90%9c/?q=千一网络
%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 的参数值进行编码。

posted @ 2013-04-26 11:15  我不是杰克船长  阅读(492)  评论(0编辑  收藏  举报