1. 程式人生 > >三種編碼解碼的方法和區別

三種編碼解碼的方法和區別

encodeURI和decodeURI

encodeURIComponent和decodeURIComponent

encodeURIComponent(“http://www.baidu.com“)
encodeURIComponent(“http://www.baidu.com/My first/”)
encodeURIComponent(“,/?:@&=+$#”)
encodeURIComponent(“你好”)
輸出:
http%3A%2F%2Fwww.baidu.com
http%3A%2F%2Fwww.baidu.com%2FMy%20first%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23
%E4%BD%A0%E5%A5%BD

escape和unescape

escape(“http://www.baidu.com“)
escape(“http://www.baidu.com/My first/”)
escape(“,/?:@&=+$#”)
escape(“你好”)
輸出:
http%3A//www.baidu.com
http%3A//www.baidu.com/My%20first/
%2C/%3F%[email protected]%26%3D+%24%23
%u4F60%u597D

總結:
1、僅僅只是對於中文轉碼來說,三種轉碼方式是是一樣的。
2、escape()函式已過時,請使用encodeURI()或encodeURIComponent()函式替代該函式。(該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ - _ + . / 。其他所有的字元都會被轉義序列替換。)
3、encodeURI和encodeURIComponent區別:
—— 該兩種方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ’ ( ) 。
—— encodeURI目的是對 URI 進行完整的編碼,因此對 :;/?:@&=+$,# 在 URI 中具有特殊含義的 ASCII 標點符號,encodeURI() 函式是不會進行轉義的,encodeURIComponent()會。
—— 如果只是一個URL,不帶引數就使用encodeURI。
如果URL帶引數,就使用encodeURIComponent。
常見例子:頁面之間跳轉傳遞引數、cookie應用。