JS中對URL進行轉碼與解碼

2022-09-01 00:57:11 字數 1872 閱讀 6033

1. escape 和 unescape

escape()不能直接用於url編碼,它的真正作用是返回乙個字元的unicode編碼值。

採用unicode字符集對指定的字串除0-255以外進行編碼。所有的空格符、標點符號、特殊字元以及更多有聯絡非ascii字元都將被轉化成%xx格式的字元編碼(xx等於該字元在字符集表裡面的編碼的16進製制數字)。比如,空格符對應的編碼是%20。

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

escape()函式用於js對字串進行編碼不常用。

var url = "http://localhost:8080/pro?a=1&b=張三&c=aaa";

2. encodeuri 和 decodeuri

把uri字串採用utf-8編碼格式轉化成escape各式的字串。

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

encodeuri()用於整個url轉碼,而decodeuri()用於整個url解碼

var url1 = "http://localhost:8080/pro?a=1&b='張三'&c=aaa";

decodeuri(url2) --> "http://localhost:8080/pro?a=1&b='張三'&c=aaa";

3. encodeuricomponent 和 decodeuricomponent

與encodeuri()的區別是,它用於對url的組成部分進行個別編碼,而不用於對整個url進行編碼。

因此,"; / ? : @ & = + $ , #",這些在encodeuri()中不被編碼的符號,在encodeuricomponent()中統統會被編碼。至於具體的編碼方法,兩者是一樣。把uri字串採用utf-8編碼格式轉化成escape格式的字串。

encodeuricomponent() 用於引數的傳遞,引數包含特殊字元可能會造成間斷。

例1

var url = "http://localhost:8080/pro?a=1&b=張三&c=aaa";

例2

var url = "http://localhost:8080/pp?a=1&b="+ paramurl,
var paramurl = "http://localhost:8080/aa?a=1&b=2&c=3";
應該使用encodeuricomponent()進行轉碼
encodeuricomponent(paramurl) --> "http://localhost:8080/pp?a=1&b=http%3a%2f%2flocalhost%3a8080%2faa%3fa%3d1%26b%3d2%23%26c%3d3"

文章參考: 

JS中對URL進行轉碼與解碼

1.escape 和 unescape escape 不能直接用於url編碼,它的真正作用是返回乙個字元的unicode編碼值。採用unicode字符集對指定的字串除0 255以外進行編碼。所有的空格符 標點符號 特殊字元以及更多有聯絡非ascii字元都將被轉化成 xx格式的字元編碼 xx等於該字元...

JS中對URL進行轉碼與解碼

1.escape 和 unescape escape 不能直接用於url編碼,它的真正作用是返回乙個字元的unicode編碼值。採用unicode字符集對指定的字串除0 255以外進行編碼。所有的空格符 標點符號 特殊字元以及更多有聯絡非ascii字元都將被轉化成 xx格式的字元編碼 xx等於該字元...

JS對URL進行轉碼與解碼

用途 用於js對字串編碼 escape 用於整個url編碼 encodeurl 用於引數傳遞編碼 encodeuricomponent 詳解 1.escape 和 unescape escape 不能直接用於url編碼,它的真正作用是返回乙個字元的unicode編碼值。採用unicode字符集對指定...