這兩個函數功能上面比較接近,但是有一些區別。
- encodeURI:不會進行編碼的字符有82個 :!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
- encodeURIComponent:不會進行編碼的字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
從上面的說明中我們可以看出來encodeURIComponent編碼更很一些,被編碼后的字符都變成%xx這樣的16進制形式。
從使用的角度來說:
encodeURI主要用於直接賦值給地址欄時候:
location.href=encodeURI("http://huangjacky.com/");
而encodeURIComponent主要用於url的query參數:
location.href="http://huangjacky.com/test.php?a="+encodeURIComponent("我就是我");
大致就是這樣了。
這個時候你肯定要說還有個escape函數。
關於escape我要說兩點:
- ECMAScript 3中已經不提倡使用這個函數了,所以我們還是少用吧。
- escape不會編碼的字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z