這些方法用來對URL進行編碼和界面,有什麼區別?見下面列子:javascript
原始URLhtml
var url = "http://dotnetcms.org/Hello啓明星"
(1)使用escape編碼(escape編碼已通過時了,再也不推薦使用):java
escape(url) 輸出 http%3A//dotnetcms.org/Hello%u542F%u660E%u661F
(2)使用encodeURI編碼
使用 encodeURI(url) 輸出 http://dotnetcms.org/Hello%E5%90%AF%E6%98%8E%E6%98%9F
(3)使用encodeURIComponent 編碼url
使用 encodeURIComponent(url) 輸出 http%3A%2F%2Fdotnetcms.org%2FHello%E5%90%AF%E6%98%8E%E6%98%9F
從上面,能夠很容易看到 encodeURI和encodeURIComponent 的區別:encodeURI會保留 http://dotnetcms.org 格式,而 encodeURIComponent 則會把 :// 也給編碼。spa
正常狀況下,咱們使用ASP.NET的 Server.UrlDecode(url) 能進行解碼:code
在上面三種編碼狀況下,使用ASP.NET解碼,htm
string url1 = "http%3A//dotnetcms.org/Hello%u542F%u660E%u661F"; string url2 = "http://dotnetcms.org/Hello%E5%90%AF%E6%98%8E%E6%98%9F"; string url3 = "http%3A%2F%2Fdotnetcms.org%2FHello%E5%90%AF%E6%98%8E%E6%98%9F"; Response.Write(Server.UrlDecode(url1)); Response.Write("<br>"); Response.Write(Server.UrlDecode(url2)); Response.Write("<br>"); Response.Write(Server.UrlDecode(url3));
下面是結果:blog
http://dotnetcms.org/Hello啓明星 http://dotnetcms.org/Hello啓明星 http://dotnetcms.org/Hello啓明星
若是不能返回結果,你可使用 HttpUtility.UrlDecode(url,Encoding) 方法,第二個參數制定編碼格式ip