JS-編碼函數:escape(),encodeURI(),encodeURIComponent()

來源:互聯網
上載者:User

標籤:返回   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()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.