200907081328JavaScript 網址編碼函式 escape encodeURI encodeURIComponent 的不同

在 JavaScript 處理網址的時候,常常會用到 escape encodeURI encodeURIComponent 這三個函式。這三個函式功能很像,但又有些許不同,所以寫篇文章記錄三個函式的不同之處。

不同之處大致上來說可以分成兩部份,第一個部份是不處理的字元不同。除了 [A-Z] 、 [a-z] 、 [0-9] 是三個函式都不處理外。 escape encodeURI encodeURIComponent 不處理的字元分別是︰

escape * + - . / @ _
encodeURI * + - . / @ _ ! # $ ' ( ) , : ; = ? ~
encodeURIComponent * - . / @ _ ! ' ( ) ~

 

第二個不同的部份是 escape 對多位元字元的處理和 encodeURI encodeURIComponent 不同。例如 UTF-8 編碼的「中」這個字, escape('中') 會變成 %u929D%uFFFD , encodeURI('中') 和 encodeURIComponent('中') 則是 %E9%8A%9D%EF%BF%BD

 

把 escape encodeURI encodeURIComponent 解碼回來的函式分別是 unescape decodeURI decodeURIComponent

依我個人的經驗,我最常用的是 encodeURIComponent 。

延伸 線上執行 JavaScript 編碼函式 encodeURIComponent encodeURI escape
回應
Google 站內搜尋
BloggerAds
累積 | 今日
loading......
    沒有新回應!





Powered by Xuite