js編碼 解碼

2021-06-18 06:05:28 字數 1746 閱讀 7693

js對文字進行編碼涉及3個函式:escape,encodeuri,encodeuricomponent,相應3個解碼函式:unescape,decodeuri,decodeuricomponent

1、傳遞引數時需要使用encodeuricomponent,這樣組合的url才不會被#等特殊字元截斷。                           

例如:2、進行url跳轉時可以整體使用encodeuri

例如: location.href=encodeuri(中國&ct=21);

使用這個方法編碼的字元在php中可以使用urldecode()函式反編碼

3、js使用資料時可以使用escape

escape對0-255以外的unicode值進行編碼時輸出%u****格式,其它情況下escape,encodeuri,encodeuricomponent編碼結果相同。

escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,a-z

encodeuri不編碼字元有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,a-z

encodeuricomponent不編碼字元有71個:!, ',(,),*,-,.,_,~,0-9,a-z,a-z

附上這個三個函式的介紹:

escape 方法

對 string 物件編碼以便它們能在所有計算機上可讀,

escape(charstring)

必選項 charstring 引數是要編碼的任意 string 物件或文字。

說明escape 方法返回乙個包含了 charstring 內容的字串值( unicode 格式)。所有空格、標點、重音符號以及其他非 ascii 字元都用 %xx 編碼代替,

其中 xx 等於表示該字元的十六進製制數。例如,空格返回的是 "%20" 。

字元值大於 255 的以 %u***x 格式儲存。

注意   escape 方法不能夠用來對統一資源標示碼 (uri) 進行編碼。對其編碼應使用 encodeuri 和encodeuricomponent 方法。

encodeuri 方法

將文字字串編碼為乙個有效的統一資源識別符號 (uri)。

encodeuri(uristring)

必選的 uristring 引數代表乙個已編碼的 uri。

說明encodeuri 方法返回乙個編碼的 uri。如果您將編碼結果傳遞給 decodeuri,那麼將返回初始的字串。encodeuri 方法不會對下列字元進行編碼:":"、

"/"、";" 和 "?"。請使用 encodeuricomponent 方法對這些字元進行編碼。

encodeuricomponent 方法

將文字字串編碼為乙個統一資源識別符號 (uri) 的乙個有效元件。

encodeuricomponent(encodeduristring)

必選的 encodeduristring 引數代表乙個已編碼的 uri 元件。

說明encodeuricomponent 方法返回乙個已編碼的 uri。如果您將編碼結果傳遞給 decodeuricomponent,那麼將返回初始的字串。因為 encodeuricomponent 

方法對所有的字元編碼,請注意,如果該字串代表乙個路徑,例如 /folder1/folder2/default.html,其中的斜槓也將被編碼。這樣一來,當該編碼結

果被作為請求傳送到 web 伺服器時將是無效的。如果字串中包含不止乙個 uri 元件,請使用 encodeuri 方法進行編碼。

JS 編碼解碼

encodeuri 函式可把字串作為 uri 進行編碼。encodeuri uristring 引數 描述uristring 必需。乙個字串,含有 uri 或其他要編碼的文字。uristring 的副本,其中的某些字元將被十六進製制的轉義序列進行替換。該方法不會對 ascii 字母和數字進行編碼,也...

JS編碼解碼

encodeuri 函式可把字串作為 uri 進行編碼。encodeuri uristring 引數 描述uristring 必需。乙個字串,含有 uri 或其他要編碼的文字。uristring 的副本,其中的某些字元將被十六進製制的轉義序列進行替換。該方法不會對 ascii 字母和數字進行編碼,也...

JS編碼解碼

encodeuri 函式可把字串作為 uri 進行編碼。encodeuri uristring 引數 描述uristring 必需。乙個字串,含有 uri 或其他要編碼的文字。uristring 的副本,其中的某些字元將被十六進製制的轉義序列進行替換。該方法不會對 ascii 字母和數字進行編碼,也...