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