JS 三種URI編碼 解碼方式比較

2021-08-28 06:27:06 字數 1569 閱讀 9741

資料傳遞常需要編碼後傳遞,接收還需反編譯,定義url:

var url = "'cs逍遙劍仙'&password='

19931128

'";

console.log(escape(url));// 編碼

console.log(unescape(escape(url)));// 解碼

結果

%27

console.log(encodeuricomponent(url));// 編碼

console.log(decodeuricomponent(encodeuricomponent(url)));// 解碼

結果

%91%e4%bb%99'%26password%3d'19931128'

console.log(encodeuri(url));// 編碼

console.log(decodeuri(encodeuri(url)));// 解碼

結果

'cs%e9%

80%8d%e9%81%a5%e5%

89%91%e4%bb%

99'&password='19931128'

三種方法都不會對 ascii 字母、數字和規定的特殊 ascii 標點符號進行編碼,其餘都替換為十六進製制轉義序列

【escape & unescape】

escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,a-z
對字串全部進行轉義編碼,ecmascript v3 反對使用該方法,對url編碼勿使用此方法

【encodeuricomponent & decodeuricomponent】

encodeuricomponent不編碼字元有71個:!, ',(,),*,-,.,_,~,0-9,a-z,a-z
傳遞引數時需使用encodeuricomponent,組合的url才不會被#等特殊字元截斷

【encodeuri & decodeuri】

encodeuri不編碼字元有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,a-z
進行url跳轉時可以整體使用encodeuri,如果uri中含分隔符如 ? 和 #,應使用encodeuricomponent

推薦使用encodeuricomponent

原文:[js中三種uri編碼方式比較](

js中三種URI編碼方式比較

區別分析結論 資料傳遞常需要編碼後傳遞,接收還需反編譯,定義url var url cs逍遙劍仙 password 19931128 console.log escape url 編碼 console.log unescape escape url 解碼結果 27console.log encode...

js 中編碼和解碼的三種方法

js對文字進行編碼涉及3個函式 escape,encodeuri,encodeuricomponent,相應3個解碼函式 unescape,decodeuri,decodeuricomponent,它們的區別如下 1 escape 函式 定義和用法 escape 函式可對字串進行編碼,這樣就可以在所...

jdbc statement三種方式的比較

我在整理jdbc打包寫乙個集合方便以後用的時候發現了這個問題,以前也沒有注意到下來研究了一翻 共同點 statement,preparedstatement和callablestatement都是介面 inte ce 不同點 statement介面提供了執行語句和獲取結果的基本方法 prepared...