javascript中可用的編碼解碼函數

javascript中可用的編碼解碼函數,有如下的組合: 

  • escape(string); 
    unescape(string);
  • encodeURI(string); 
    decodeURI(string);
  • encodeURIComponent(string); 
    decodeURIComponent(string);

他們之間的區別爲:

escape/unescape: 
以16進制編碼字符串,對空格、符號等字符用%xx編碼表示,對中文等字符用%uxxxx編碼表示。自javascript1.5之後,此方法已經不被推薦使用。

encodeURI/decodeURI: 
以UTF-8編碼編碼字符串,對這些字符:“ ; , / ? : @ & = + $ ”不做編碼。

encodeURIComponent/decodeURIComponent: 
以UTF-8編碼編碼所有字符串。

因爲escape/unescape已經deprecated。就不說它了,encodeURI和encodeURIComponent之前的區別用實例說明: 

比如說要使用get方式將一個參數u,傳遞給服務器:

var  u="index.php?blogId=1&op=Default"; 
var  getURL="http://www.simplelife.cn/test.php?p="+encodeURI(u);

這裏,如果使用了encodeURI,那麼最終的getURL的值爲: 
http://www.simplelife.cn/test.php?p=index.php?blogId=1&op=Default

這樣,對參數u中的字符"&op=Default",將不會作爲字符串參數傳遞到服務器端,而是當作test.php的參數傳遞過去了,因爲對"&op=Default"中的字符"&"沒有做編碼。 
所以,在這種應用場景下,就需要使用encodeURIComponent,編碼後的getURL值爲: 
http://www.simplelife.cn/test.php?p=index.php%3FblogId%3D1%26op%3DDefault

這樣,參數就可以順利傳遞過去了。在服務器端得到的字符串將是正確的u。 

反之,如果需要通過get方式訪問某一URL,但是URL中包含中文等字符,爲了防止亂碼等編碼問題,需要將URL通過encodeURI進行編碼。
發佈了75 篇原創文章 · 獲贊 8 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章