JavaScript中各種編碼解碼函數(shù)的區(qū)別和注意事項(xiàng)
更新時(shí)間:2010年08月19日 20:08:05 作者:
JavaScript 中encodeURI,encodeURIComponent與escape的區(qū)別和注
大家在使用JS提交數(shù)據(jù)時(shí),尤其是中文的時(shí)候,經(jīng)常會(huì)需要將要提交的字符串進(jìn)行URL編碼。在JS中對(duì)字符串進(jìn)行URL編碼有好幾種方 法,encodeURI,encodeURIComponent,還有escape。在我看到的很多代碼中escape這個(gè)函數(shù)用的最多,不過這個(gè)函數(shù)卻 是不推薦使用的。下面我們來分別看看這幾個(gè)函數(shù):
encodeURI:對(duì)指定的字符串進(jìn)行URL編碼,不包括 : # / \ = & 這些URL中的關(guān)鍵字符。
encodeURIComponent:對(duì)字符串中的字符進(jìn)行編碼,包括URL中的特殊字符。
escape:這個(gè)是JS比較早期版本的函數(shù),這個(gè)函數(shù)中處理unicode字符的時(shí)候會(huì)有些問題。
代碼如下:
var url = "http://www.abc.com?q=aa& amp;b=呵呵";
var encodedUrl = encodeURI(url);
alert(encodedUrl); //輸出:http://www.abc.com?q=aa&b=%E5%91%B5%E5%91%B5
encodedUrl = encodeURIComponent(url);
alert(encodedUrl); //輸出:http%3A%2F %2Fwww.abc.com%3Fq%3Daa%26b%3D%E5%91%B5%E5%91%B5
alert(escape(url)); //輸出:http%3A//www.abc.com%3Fq%3Daa%26b%3D%u5475%u5475
如上所示,escape函數(shù)中處理中文字符的時(shí)候,都會(huì)轉(zhuǎn)換成%uxxxx這種形式,顯然這個(gè)和URL編碼的格式不一樣,而 encodeURIComponent函數(shù)編碼是最徹底的,如果沒有特殊需要的話,encodeURIComponent這個(gè)函數(shù)是比較常用的,當(dāng)然,也 許我們使用escape也不會(huì)有什么問題,也許你的服務(wù)端語言也能夠正常的解析出來,不過這個(gè)函數(shù)在處理unicode字符的時(shí)候還不是很標(biāo)準(zhǔn),所以這里 建議大家使用encodeURIComponent和decodeURIComponent這對(duì)函數(shù)來對(duì)字符串進(jìn)行URL編碼和解碼。
encodeURI:對(duì)指定的字符串進(jìn)行URL編碼,不包括 : # / \ = & 這些URL中的關(guān)鍵字符。
encodeURIComponent:對(duì)字符串中的字符進(jìn)行編碼,包括URL中的特殊字符。
escape:這個(gè)是JS比較早期版本的函數(shù),這個(gè)函數(shù)中處理unicode字符的時(shí)候會(huì)有些問題。
代碼如下:
復(fù)制代碼 代碼如下:
var url = "http://www.abc.com?q=aa& amp;b=呵呵";
var encodedUrl = encodeURI(url);
alert(encodedUrl); //輸出:http://www.abc.com?q=aa&b=%E5%91%B5%E5%91%B5
encodedUrl = encodeURIComponent(url);
alert(encodedUrl); //輸出:http%3A%2F %2Fwww.abc.com%3Fq%3Daa%26b%3D%E5%91%B5%E5%91%B5
alert(escape(url)); //輸出:http%3A//www.abc.com%3Fq%3Daa%26b%3D%u5475%u5475
如上所示,escape函數(shù)中處理中文字符的時(shí)候,都會(huì)轉(zhuǎn)換成%uxxxx這種形式,顯然這個(gè)和URL編碼的格式不一樣,而 encodeURIComponent函數(shù)編碼是最徹底的,如果沒有特殊需要的話,encodeURIComponent這個(gè)函數(shù)是比較常用的,當(dāng)然,也 許我們使用escape也不會(huì)有什么問題,也許你的服務(wù)端語言也能夠正常的解析出來,不過這個(gè)函數(shù)在處理unicode字符的時(shí)候還不是很標(biāo)準(zhǔn),所以這里 建議大家使用encodeURIComponent和decodeURIComponent這對(duì)函數(shù)來對(duì)字符串進(jìn)行URL編碼和解碼。
您可能感興趣的文章:
- js編碼、解碼函數(shù)介紹及其使用示例
- 對(duì)字符串進(jìn)行HTML編碼和解碼的JavaScript函數(shù)
- JavaScript字符集編碼與解碼詳談
- javascript中的Base64、UTF8編碼與解碼詳解
- Go語言對(duì)JSON進(jìn)行編碼和解碼的方法
- Node.js中使用Buffer編碼、解碼二進(jìn)制數(shù)據(jù)詳解
- js對(duì)圖片base64編碼字符串進(jìn)行解碼并輸出圖像示例
- Javascript下的urlencode編碼解碼方法附decodeURIComponent
- javascript URL編碼和解碼使用說明
- JavaScript中的編碼和解碼函數(shù)
相關(guān)文章
JavaScript省市聯(lián)動(dòng)實(shí)現(xiàn)代碼
這篇文章主要介紹了JavaScript省市聯(lián)動(dòng)實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-02-02JavaScript實(shí)現(xiàn)無縫輪播圖的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript語言實(shí)現(xiàn)無縫輪播功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-0720個(gè)必會(huì)的JavaScript面試題(小結(jié))
這篇文章主要介紹了20個(gè)必會(huì)的JavaScript面試題(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-07-07javascript判斷網(wǎng)頁是關(guān)閉還是刷新
本篇文章給大家介紹js判斷網(wǎng)頁是關(guān)閉還是刷新,實(shí)現(xiàn)原理就是通過離開頁面行為時(shí)間onunload觸發(fā)時(shí)間去檢測(cè)此時(shí)的瀏覽器的窗口大小,根據(jù)大小由此判斷用戶是刷新,跳轉(zhuǎn)或是關(guān)閉行為程序,需要的朋友可以參考下本文2015-09-09微信小程序下面商品左右滑動(dòng)上面tab也跟隨變動(dòng)功能實(shí)現(xiàn)
這篇文章主要介紹了小程序下面商品左右滑動(dòng)上面tab也跟隨變動(dòng)功能,也就是點(diǎn)擊tab切換下面的商品信息,滑動(dòng)下面的商品信息tab也進(jìn)行切換,本文給大家分享實(shí)現(xiàn)代碼,需要的朋友可以參考下2022-07-07