標籤:返回 div encode com nes 使用 需要 曆史 .com
1、escape()
escape()是js編碼函數中最古老的一個。雖然這個函數現在已經不提倡使用了,但是由於曆史原因,很多地方還在使用它,所以有必要先從它講起。
實際上,escape()不能直接用於URL編碼,它的真正作用是返回一個字元的Unicode編碼值。比如“春節”的返回結果是%u6625%u8282,也就是說在Unicode字元集中,“春”是第6625個(十六進位)字元,“節”是第8282個(十六進位)字元。
escape("\u6625\u8282"); //輸出 "%u6625%u8282" unescape("%u6625%u8282"); //輸出 "春節"
escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z。
2、encodeURI()
它於對整個URL進行編碼,因此除了常見的符號以外,對其他一些在網址中有特殊含義的符號“; / ? : @ & = + $ , #”,也不進行編碼。編碼後,它輸出符號的utf-8形式,並且在每個位元組前加上%。
encodeURI("http://www.cnblogs.com/fydxx/some other thing"); //=> "http://www.cnblogs.com/season-huang/some%20other%20thing";
它對應的解碼函數是decodeURI()。
3、encodeURIComponent()
最後一個Javascript編碼函數是encodeURIComponent()。與encodeURI()的區別是,它用於對URL的組成部分進行個別編碼,而不用於對整個URL進行編碼。
因此,“; / ? : @ & = + $ , #”,這些在encodeURI()中不被編碼的符號,在encodeURIComponent()中統統會被編碼。至於具體的編碼方法,兩者是一樣。
encodeURIComponent("http://www.cnblogs.com/fydxx/some other thing"); //=> http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing
它對應的解碼函數是decodeURIComponent()。
總結:
1、如果只是編碼字串,不和URL有半毛錢關係,那麼用escape。
2、如果你需要編碼整個URL,然後需要使用這個URL,那麼用encodeURI。
3、當你需要編碼URL中的參數的時候,那麼encodeURIComponent是最好方法。
附:
escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字元有82個:!,#,$,&,‘,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不編碼字元有71個:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z
JS-編碼函數:escape(),encodeURI(),encodeURIComponent()