簡單明了區分escape、encodeURI和encodeURIComponent(轉)

來源:互聯網
上載者:User

標籤:logs   component   esc   www   針對   com   encode   sea   區分   

一、前言

講這3個方法區別的文章太多了,但是大部分寫的都很繞。本文試圖從實踐角度去講這3個方法。

 

二、escape和它們不是同一類

簡單來說,escape是對字串(string)進行編碼(而另外兩種是對URL),作用是讓它們在所有電腦上可讀。
編碼之後的效果是%XX或者%uXXXX這種形式。
其中 ASCII字母、數字、@*/+ ,這幾個字元不會被編碼,其餘的都會。
最關鍵的是,當你需要對URL編碼時,請忘記這個方法,這個方法是針對字串使用的,不適用於URL。
事實上,這個方法我還沒有在實際工作中用到過,所以就不多講了。

 

三、最常用的encodeURI和encodeURIComponent對URL編碼是常見的事,所以這兩個方法應該是實際中要特別注意的。它們都是編碼URL,唯一區別就是編碼的字元範圍,其中encodeURI方法 不會對下列字元編碼  ASCII字母、數字、[email protected]#$&*()=:/,;?+‘encodeURIComponent方法 不會對下列字元編碼 ASCII字母、數字、~!*()‘所以encodeURIComponent比encodeURI編碼的範圍更大。實際例子來說,encodeURIComponent會把 http://  編碼成  http%3A%2F%2F 而encodeURI卻不會。  四、最重要的,我該什麼場合用什麼方法區別上面說的很清楚了,接下來從實際例子來說說把。     1、如果只是編碼字串,不和URL有半毛錢關係,那麼用escape。  2、如果你需要編碼整個URL,然後需要使用這個URL,那麼用encodeURI。 比如
encodeURI("http://www.cnblogs.com/season-huang/some other thing");
編碼後會變為
"http://www.cnblogs.com/season-huang/some%20other%20thing";

其中,空格被編碼成了%20。但是如果你用了encodeURIComponent,那麼結果變為

"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing"

看到了區別嗎,連 "/" 都被編碼了,整個URL已經沒法用了。

  

3、當你需要編碼URL中的參數的時候,那麼encodeURIComponent是最好方法。

var param = "http://www.cnblogs.com/season-huang/"; //param為參數param = encodeURIComponent(param);var url = "http://www.cnblogs.com?next=" + param;console.log(url) //"http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F"
看到了把,參數中的 "/" 可以編碼,如果用encodeURI肯定要出問題,因為後面的/是需要編碼的。

簡單明了區分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.