encodeURIComponent 和 decodeURIComponent

encodeURIComponent(URI) 

MDN解釋:

encodeURIComponent(URI)  都是對統一資源標識符(URI)的組成部分進行編碼的方法。

返回值:

返回URIstring的副本,其中的某些字符將被十六進制的轉義序列進行替換。

說明:

(1)該方法不會對ASCLL、字母、數字進行編碼,也不會對ASCLL標點符號進行編碼:如:-    . ! ~ * ' ( )

(2)其他字符(比如:; / ? : @ & = + $ , # 這些用於分割URI組件的標點符號),都是由一個或多個十六進制的轉義序列替換的。

 decodeURIComponent(url) 函數

用法:

 decodeURIComponent() 函數可把字符串作爲 URI 組件進行解碼。

返回值:

解碼後的文本或URI組件

在使用js的jQuery的post向後臺servlet傳遞拼接的字符串數據時,一些特殊的字符例如:“+、@、#、

$、%、&、?、/”等無法傳遞到後臺輸出。

舉個例子:

       var str1="a+aa+bb@kk$dd";

       var  data="data1"="+str1+"+"&"+"data2"+str2;

         如果不進行編碼,則通過js的jQuery的post或者使用window.self.location傳遞數據到後臺,都會造成+、@、$字符無法正常輸出。

正確寫法:

        var str1=encodeURIComponent("a+aa+bb@kk$dd");

        var  data="data1"="+str1+"+"&"+"data2"+str2;

小知識

<1>  什麼是URI 

URI, 統一資源標識符( Unifrom Resource Identifier, URI ),表示的是web上每一中可用的資源,如: html文檔、圖像、視頻短片、程序等都由一個 URI 進行定位的。

<2>  URI的組成部分

URI通常有三部分組成:

(1)訪問資源的命名機制。

(2)存放資源的主機名。

(3)資源自身的名字。

<3> URI舉例

如:https://blog.csdn.net/qq_1063614453/article/details/111  

我們可以這樣解釋:

(1)這是一個可以通過https 協議訪問的資源,

(2)位於主機 blog.csdn.net 上,

(3)通過 "/qq_1063614453/article/details/111" 可以對資源進行唯一標識

注意:以上三點只不過是對示例的解釋,這三點並不是URI的必要條件,URI只是一種概念,怎樣實現無所謂,只要它唯一標識一個資源就可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章