JS中三種URI編碼方式對比分析
一、實(shí)例比較
數(shù)據(jù)傳遞常需要編碼后傳遞,接收還需反編譯,定義url:
var url = "https://www.cnblogs.com/?username='小森森'&password='666666'";
escape 與 unescape
console.log(escape(url));// 編碼 console.log(unescape(escape(url)));// 解碼
結(jié)果:
https%3A//www.cnblogs.com/%3Fusername%3D%27%u5C0F%u68EE%u68EE%27%26password%3D%27666666%27
encodeURIComponent 與 decodeURIComponent (推薦)
console.log(encodeURIComponent(url));// 編碼 console.log(decodeURIComponent(encodeURIComponent(url)));// 解碼
結(jié)果:
https%3A%2F%2Fwww.cnblogs.com%2F%3Fusername%3D'%E5%B0%8F%E6%A3%AE%E6%A3%AE'%26password%3D'666666'
encodeURI 與 decodeURI
console.log(encodeURI(url));// 編碼 console.log(decodeURI(encodeURI(url)));// 解碼
結(jié)果:
https://www.cnblogs.com/?username='%E5%B0%8F%E6%A3%AE%E6%A3%AE'&password='666666'
二、區(qū)別分析
三種方法都不會對 ASCII 字母、數(shù)字和規(guī)定的特殊 ASCII 標(biāo)點(diǎn)符號進(jìn)行編碼,其余都替換為十六進(jìn)制轉(zhuǎn)義序列.
escape 與 unescape
escape不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
對字符串全部進(jìn)行轉(zhuǎn)義編碼,ECMAScript v3 反對使用該方法,對URL編碼勿使用此方法
encodeURIComponent 與 decodeURIComponent
encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
傳遞參數(shù)時需使用encodeURIComponent
,組合的url才不會被#等特殊字符截?cái)?/p>
encodeURI 與 decodeURI
encodeURI不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
進(jìn)行url跳轉(zhuǎn)時可以整體使用encodeURI
,如果URI中含分隔符如 ? 和 #,應(yīng)使用encodeURIComponent
三、結(jié)論
推薦使用encodeURIComponent
到此這篇關(guān)于JS中三種URI編碼方式比較的文章就介紹到這了,更多相關(guān)js URI編碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JavaScript使用escape()、encodeURI()和decodeURI()實(shí)現(xiàn)URI編碼解碼
- js中編碼函數(shù):escape,encodeURI與encodeURIComponent詳解
- js 轉(zhuǎn)義字符及URI編碼詳解
- js中字符串編碼函數(shù)escape()、encodeURI()、encodeURIComponent()區(qū)別詳解
- 從此不再懼怕URI編碼 JavaScript及C# URI編碼詳解
- js編碼之encodeURIComponent使用介紹(asp,php)
- Javascript下的urlencode編碼解碼方法附decodeURIComponent
相關(guān)文章
Bootstrap學(xué)習(xí)筆記 輪播(Carousel)插件
Bootstrap 輪播(Carousel)插件是一種靈活的響應(yīng)式的向站點(diǎn)添加滑塊的方式。這篇文章主要介紹了Bootstrap學(xué)習(xí)筆記 輪播(Carousel)插件,需要的朋友可以參考下2017-03-03JS基于遞歸實(shí)現(xiàn)網(wǎng)頁版計(jì)算器的方法分析
這篇文章主要介紹了JS基于遞歸實(shí)現(xiàn)網(wǎng)頁版計(jì)算器的方法,結(jié)合實(shí)例形式分析了javascript采用遞歸算法實(shí)現(xiàn)網(wǎng)頁版計(jì)算器的步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-12-12使用?Schema-Utils?對?Webpack?Plugin?進(jìn)行配置項(xiàng)校驗(yàn)的簡單用例
schema-utils?庫用于在?loader?和?plugin?實(shí)例化時,對傳入的參數(shù)進(jìn)行校驗(yàn),本文重點(diǎn)給大家介紹使用?Schema-Utils?對?Webpack?Plugin?進(jìn)行配置項(xiàng)校驗(yàn)的用例詳解,感興趣的朋友一起看看吧2022-03-03JS實(shí)現(xiàn)方向鍵切換輸入框焦點(diǎn)的方法
這篇文章主要介紹了JS實(shí)現(xiàn)方向鍵切換輸入框焦點(diǎn)的方法,涉及javascript鼠標(biāo)事件及頁面元素焦點(diǎn)的切換實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08基于Bootstrap的Metronic框架實(shí)現(xiàn)條碼和二維碼的生成及打印處理操作
這篇文章主要介紹了基于Bootstrap的Metronic框架實(shí)現(xiàn)條碼和二維碼的生成及打印處理操作的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08Javascript Web Slider 焦點(diǎn)圖示例源碼
Slider 焦點(diǎn)圖會在很多的網(wǎng)站上見到,在本文為大家詳細(xì)介紹下具體的實(shí)現(xiàn)過程,下面的源碼大家可以運(yùn)行下2013-10-10js前端加密庫Crypto-js進(jìn)行MD5/SHA256/BASE64/AES加解密的方法與示例
js加密解密可以使用crypto-js它可以進(jìn)行MD5、SHA-1、SHA-256、Base64、AES、DES、等算法和加密,這是一個對稱加密的庫,可以使用 AES、DES、但沒有rsa等非對稱加密的方法2023-12-12