在web開發(fā)中,經(jīng)常會(huì)涉及到url傳參的需求,而javascript提供了一個(gè)encodeURI方法來對(duì)url中的字符串進(jìn)行編碼處理。下面我們來深入了解一下這個(gè)方法。
encodeURI函數(shù)可以將url中的字符串進(jìn)行編碼,對(duì)于特殊字符會(huì)進(jìn)行特殊處理,例如空格會(huì)被替換成%20,&符號(hào)會(huì)被替換成%26等。下面我們來看一個(gè)簡(jiǎn)單的例子:
var str = 'hello world!'; var encodedStr = encodeURI(str); console.log(encodedStr); //hello%20world!
我們可以看到,使用encodeURI對(duì)字符串進(jìn)行編碼處理后,空格被替換成了%20。
對(duì)于url中的其他特殊字符,也會(huì)有相應(yīng)的處理方式。下面是一些常見的特殊字符及其對(duì)應(yīng)的編碼方式:
字符 編碼方式 # %23 $ %24 & %26 + %2B , %2C / %2F : %3A ; %3B = %3D ? %3F @ %40
除了encodeURI方法之外,還有一個(gè)encodeURIComponent方法。相對(duì)來說,encodeURIComponent方法會(huì)更加嚴(yán)格一些,對(duì)不符合規(guī)范的字符進(jìn)行更加嚴(yán)格的編碼處理,包括一些常見的用于modem傳輸?shù)目刂谱址@纾?/p>
var str = 'hello ~world!'; var encodedStr = encodeURIComponent(str); console.log(encodedStr); //hello%20~world%21
可以看到,除了空格被替換為%20之外,字符~也被進(jìn)行了編碼處理。
在實(shí)際使用過程中,我們可能會(huì)遇到一些需要解碼的情況,javascript中提供了兩個(gè)對(duì)應(yīng)的方法decodeURI和decodeURIComponent。下面是一個(gè)簡(jiǎn)單的解碼示例:
var str = 'hello%20world!'; var decodedStr = decodeURI(str); console.log(decodedStr); //hello world!
可以看到,將編碼后的字符串解碼之后,空格被恢復(fù)為了原本的樣子。
綜上所述,encodeURI是javascript中用于將url中的字符串進(jìn)行編碼的方法,而decodeURI則是解碼的方法。