JavaScript中有三個(gè)可以對(duì)字符串編碼的函數(shù),分別是: escape,encodeURI,encodeURIComponent,相應(yīng)3個(gè)解碼函數(shù):unescape,decodeURI,decodeURIComponent 。 下面簡(jiǎn)單介紹一下它們的區(qū)別 1 escape()函數(shù)
定義和用法
語(yǔ)法
參數(shù) 描述
返回值
說(shuō)明
語(yǔ)法
參數(shù) 描述
返回值
說(shuō)明 該方法的目的是對(duì) URI 進(jìn)行完整的編碼,因此對(duì)以下在 URI 中具有特殊含義的 ASCII 標(biāo)點(diǎn)符號(hào),encodeURI() 函數(shù)是不會(huì)進(jìn)行轉(zhuǎn)義的:;/?:@&=+$,#
3 encodeURIComponent() 函數(shù)
定義和用法
語(yǔ)法
參數(shù) 描述
返回值
說(shuō)明 其他字符(比如 :;/?:@&=+$,# 這些用于分隔 URI 組件的標(biāo)點(diǎn)符號(hào)),都是由一個(gè)或多個(gè)十六進(jìn)制的轉(zhuǎn)義序列替換的。
提示和注釋
4 總結(jié): 通過(guò)對(duì)三個(gè)函數(shù)的分析,我們可以知道:escape()除了 ASCII 字母、數(shù)字和特定的符號(hào)外,對(duì)傳進(jìn)來(lái)的字符串全部進(jìn)行轉(zhuǎn)義編碼,因此如果想對(duì)URL編碼,最好不要使用此方法。而encodeURI() 用于編碼整個(gè)URI,因?yàn)閁RI中的合法字符都不會(huì)被編碼轉(zhuǎn)換。encodeURIComponent方法在編碼單個(gè)URIComponent(指請(qǐng)求參數(shù))應(yīng)當(dāng)是最常用的,它可以講參數(shù)中的中文、特殊字符進(jìn)行轉(zhuǎn)義,而不會(huì)影響整個(gè)URL。
5 示例: 1 escape() <script type="text/javascript"> document.write(escape("http://www.w3school.com.cn") + "<br />") document.write(escape("?!=()#%&")) </script>輸出: < type="text/javascript"> http%3A//www.w3school.com.cn %3F%21%3D%28%29%23%25%262 encodeURI() <script type="text/javascript"> document.write(encodeURI("http://www.w3school.com.cn")+ "<br />") document.write(encodeURI("http://www.w3school.com.cn/My first/")) document.write(encodeURI(",/?:@&=+$#")) </script>輸出: http://www.w3school.com.cn/My%20first/ ,/?:@&=+$# 對(duì)整個(gè)URL進(jìn)行編碼,而URL的特定標(biāo)識(shí)符不會(huì)被轉(zhuǎn)碼。 3 encodeURIComponent()
例1: <script type="text/javascript"> document.write(encodeURIComponent("http://www.w3school.com.cn")) document.write("<br />") document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) document.write("<br />") document.write(encodeURIComponent(",/?:@&=+$#")) </script> 輸出:
http%3A%2F%2Fwww.w3school.com.cn </script> 對(duì)URL中的參數(shù)進(jìn)行編碼,因?yàn)閰?shù)也是一個(gè)URL,如果不編碼會(huì)影響整個(gè)URL的跳轉(zhuǎn)。 |
|
來(lái)自: 我的前端圖書(shū)館 > 《編碼解碼3種方式》