首頁 web前端 js教程 JavaScript encodeURI 和encodeURIComponent_javascript技巧

JavaScript encodeURI 和encodeURIComponent_javascript技巧

May 16, 2016 pm 03:27 PM
encodeuricomponent

encodeURI和encodeURIComponet函數都是javascript中用來對URI進行編碼,將相關參數轉換成UTF-8編碼格式的資料。 URI在進行定位跳轉時,參數裡面的中文、日文等非ASCII編碼都會進行編碼轉換。

這兩個函數函數上面比較接近,但是有些差異。

 encodeURI:不會進行編碼的字元有82個:!,#,$,&,',(,),*, ,,,-,.,/,:,;,=,?,@, _,~,0-9,a-z,A-Z
 encodeURIComponent:不會進行編碼的字元有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

問題:

  ajax.get ( url '?k1'=v1 '&k2'=v2 '&k3'=v3, ... ); 

  由於URL只進行了encodeURI編碼,所以想提交的參數有searchWord = a b時,變成了a b。 

解決方法: 

  ajax.post( url, params,....) 

  其中params是物件。 

  原因:如果參數是物件或陣列時,元件庫已經幫你進行encodeURIComponent了。 而如果你只是字串,元件庫就什麼也沒做,所以到後端時就把特殊字元給過濾了。 

  encodeURI()用法

  此方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。 

  此方法的目的是對URI 進行完整的編碼,因此對以下在URI 中具有特殊意義的ASCII 標點符號,encodeURI() 函數是不會進行轉義的:;/?:@&= $, # 

  提示:如果 URI 元件中含有分隔符,例如 ? 和 #,則應使用 encodeURIComponent() 方法分別對各元件進行編碼。

  範例:

document.write(encodeURI("http://www.w3school.com.cn")+ "<br />") 
document.write(encodeURI("http://www.w3school.com.cn/My first/")) 
document.write(encodeURI(",/?:@&=+$#")) 
//批注:只转换域名后面的部分,并且对,/?:@&=+$#不处理。 
// http://www.w3school.com.cn 
// http://www.w3school.com.cn/My%20first/ 
// ,/?:@&=+$#  

登入後複製

  decodeURI() 函數可對 encodeURI() 函數編碼過的 URI 進行解碼。

  encodeURIComponent()用法 

  此方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。 

  其他字元(例如 :;/?:@&= $,# 這些用來分隔 URI 元件的標點符號),都是由一個或多個十六進位的轉義序列取代的。

  提示:請注意 encodeURIComponent() 函數 與 encodeURI() 函數的區別之處,前者假定它的參數是 URI 的一部分(例如協定、主機名稱、路徑或查詢字串)。因此 encodeURIComponent() 函數將轉義用於分隔 URI 各部分的標點符號。

  範例:

document.write(encodeURIComponent("http://www.w3school.com.cn")) 
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) 
document.write(encodeURIComponent(",/?:@&=+$#")) 
//对比 
// http%3A%2F%2Fwww.w3school.com.cn 
// http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F 
// %2C%2F%3F%3A%40%26%3D%2B%24%23  
登入後複製

  decodeURIComponent() 函式可對 encodeURIComponent() 函式編碼的 URI 進行解碼。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在JavaScript中替換字符串字符 在JavaScript中替換字符串字符 Mar 11, 2025 am 12:07 AM

在JavaScript中替換字符串字符

自定義Google搜索API設置教程 自定義Google搜索API設置教程 Mar 04, 2025 am 01:06 AM

自定義Google搜索API設置教程

示例顏色json文件 示例顏色json文件 Mar 03, 2025 am 12:35 AM

示例顏色json文件

8令人驚嘆的jQuery頁面佈局插件 8令人驚嘆的jQuery頁面佈局插件 Mar 06, 2025 am 12:48 AM

8令人驚嘆的jQuery頁面佈局插件

構建您自己的Ajax Web應用程序 構建您自己的Ajax Web應用程序 Mar 09, 2025 am 12:11 AM

構建您自己的Ajax Web應用程序

什麼是這個'在JavaScript? 什麼是這個'在JavaScript? Mar 04, 2025 am 01:15 AM

什麼是這個'在JavaScript?

通過來源查看器提高您的jQuery知識 通過來源查看器提高您的jQuery知識 Mar 05, 2025 am 12:54 AM

通過來源查看器提高您的jQuery知識

10張移動秘籍用於移動開發 10張移動秘籍用於移動開發 Mar 05, 2025 am 12:43 AM

10張移動秘籍用於移動開發

See all articles