1. 程式人生 > >url編碼函式encodeURI和encodeURIComponent方法

url編碼函式encodeURI和encodeURIComponent方法

一、作用
全域性函式encodeURI和encodeURIComponent方法,都可以用來進行url編碼。之所以要對url進行編碼,是因為瀏覽器不能識別某些字元,例如:空格、中文等。這兩個方法對這些特殊字元用特殊的UTF-8進行編碼,從而使得瀏覽器可以識別。
二、區別
首先要講解一下,專屬url的特殊字元,這些字元指的是除數字字母以外的字元,例如: // /  &  # 。如果某個url作為引數傳給伺服器,這時,伺服器是無法識別的。這個時候,可以用encodeURIComponent方法對這個url進行編碼。
例如,針對以下url:
var url  = "http://www.wrox.com/illegal value.html#start";
encodeURIComponent(url) //"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.html%23start"
由以上結果可知,encodeURIComponent方法把url的特殊字元以及瀏覽器無法識別的特殊字元都進行轉義了。
這個時候,你或許疑惑了,那麼encodeURI方法呢?它則是把瀏覽器無法識別的特殊字元進行了轉義 ,而保留了屬於URL的特殊字元。
encodeURI(url)   //"http://www.wrox.com/illegal%20value.html#start"
由以上結果可知,encodeURI只轉義了瀏覽器無法識別的特殊字元,保留了屬於url的特殊字元。
三、總結
記住2種特殊字元,一種,瀏覽器無法識別的特殊字元,如空格、中文。第二種,屬於url的特殊字元,如/、//、# 、&等。
encodeURI方法只把第一種特殊字元轉義,而encodeURIComponent方法會把兩種特殊字元都轉義。如果我們需要把url作為引數傳給伺服器,是要用encodeURIComponent方法的。