Server.URLEncode和HttpUtility.UrlEncode

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

posted on 2010-02-21 12:26  中道学友  阅读(3057)  评论(0编辑  收藏  举报

导航

技术追求准确,态度积极向上