Server.URLEncode和HttpUtility.UrlEncode

本文详细介绍了两种URL编码方法:Server.URLEncode和HttpUtility.UrlEncode。这两种方法用于将URL中的特殊字符转换为合法的形式,确保不同平台和浏览器能够正确解析。文章还解释了两种方法之间的差异,并给出了具体的应用场景。

Server.URLEncode方法会在一个字符串上应用URL的编码规则, 包括转义字符.

 

URLEncode会如下转换字符:

  • 空格( )会被转换为加号(+)
  • 非字母数字字符会被转换为他们的十六进制表现形式

举例:

<%Response.Write(Server.URLEncode("http://www.microsoft.com")) %>

输出结果为

http%3A%2F%2Fwww%2Emicrosoft%2Ecom

 

 

HttpUtility.UrlEncode方法可以被用来编码整个URL, 包括查询字符串值(query-string values). 诸如空格和其他的标点符号传入HTTP stream的时候, 他们可能会被误解析为流的结尾. URL encoding会把这些URL中不允许出现的字符转换为等同的字符实体. URL decoding会执行逆操作.

 

你可以使用UrlEncode()方法或UrlPathEncode()方法. 然而, 这两个方法的返回值是不同的.

UrlEncode()方法会把空格转换为加号(+).

UrlPathEncode()方法会把空格转换为字符串"%20", 这也是空格的十六进制的表示方式. 

 

你应该在对URL中的path部分编码时使用UrlPathEncode()方法, 这样能确保不论在什么平台或浏览器上执行解码的时候, 都会得到一个合法的URL.

 

两个方法的区别

他们之间没有什么具体的区别. Server.UrlEncode的存在是因为需要与经典的ASP兼容.

HttpServerUtility.UrlEncode 会在内部调用HttpUtility.UrlEncode.

 

摘自MSDN:

URL encoding ensures that all browsers will correctly transmit text in URL strings. Characters such as a question mark (?), ampersand (&), slash mark (/), and spaces might be truncated or corrupted by some browsers. As a result, these characters must be encoded in <a> tags or in query strings where the strings can be re-sent by a browser in a request string.

 

UrlEncode is a convenient way to access the HttpUtility..::.UrlEncode method at run time from an ASP.NET application. Internally, UrlEncode uses HttpUtility..::.UrlEncode to encode strings.

 

Server.URLEncode Method

http://msdn.microsoft.com/en-us/library/ms525738.aspx

HttpUtility.UrlEncode Method (String)

http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx

HttpServerUtility.UrlEncode Method (String)

http://msdn.microsoft.com/en-us/library/zttxte6w.aspx

Server.UrlEncode vs. HttpUtility.UrlEncode

http://stackoverflow.com/questions/602642/server-urlencode-vs-httputility-urlencode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值