1. 程式人生 > >URL轉碼escape() encodeURI() encodeURIComponent()

URL轉碼escape() encodeURI() encodeURIComponent()

js對文字進行編碼涉及3個函式:escape,encodeURI,encodeURIComponent,相應3個解碼函式:unescape,decodeURI,decodeURIComponent 

1.傳遞引數時需要使用encodeURIComponent ,這樣組合的url才不會被#等特殊字元截斷。                            

例如: 
url:'/supervisorManage/supervisorInfoManage/dispatchSupervisorInfo.action?mode=add&supervisorName='+ encodeURIComponent('監管人員') +'&population.populationType='+$("#_populationType_").val(); 

2、  encodeURI 著眼於對整個URL進行編碼 ,進行url跳轉時可以整體使用encodeURI 
例如:Location.href="/encodeURI"("http://cang.baidu.com/do/s?word=百度&ct=21"); 


3、  escape()不能直接用於URL編碼,它的真正作用是返回一個字元的Unicode編碼值  
   對 String 物件編碼以便它們能在所有計算機上可讀,   
    escape(charString) 
    必選項charstring引數是要編碼的任意String物件或文字。   
   說明 
  escape方法返回一個包含了charstring內容的字串值(Unicode格式)。所有空格、標點、重音符號以 

   及 其他非ASCII字元都用%xx編碼代替,其中xx等於表示該字元的十六進位制數。例如,空格返回的是 "%20 "   。 
字元值大於255的以%uxxxx格式儲存。   
注意 :escape方法不能夠用來對統一資源標示碼(URI)進行編碼。對其編碼應使用encodeURI和encodeURIComponent 方法。 

最多使用的應為encodeURIComponent,它是將中文、韓文等特殊字元轉換成utf-8格式的url編碼,所以如果給後臺傳遞引數需要使用encodeURIComponent時需要後臺解碼對utf-8支援(form中的編碼方式和當前頁面編碼方式相同) 
escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z 
encodeURI不編碼字元有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z 
encodeURIComponent不編碼字元有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z