javascript中escape()、unescape()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()比較

這些方法用來對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

相關文章
相關標籤/搜索