JavaScript使用escape()、encodeURI()和decodeURI()實(shí)現(xiàn)URI編碼解碼
一、URI編碼解碼
1、編解碼一個(gè)字符串(淘汰)
ECMAScript v3 反對(duì)使用該方法,應(yīng)使用 decodeURI() 和 decodeURIComponent() 替代它。
1、escape():編碼一個(gè)字符串
escape()除了 ASCII 字母、數(shù)字和特定的符號(hào)外,對(duì)傳進(jìn)來(lái)的字符串全部進(jìn)行轉(zhuǎn)義編碼。
語(yǔ)法:escape(value);
var str = "javascript 你好"; var str1 = escape(str); document.write(str1); //輸出:javascript%20%u4F60%u597D
2、unecape():解碼一個(gè)由escape()函數(shù)編碼的字符串
var str = "javascript 你好"; var str1 = escape(str); document.write(str1); //javascript%20%u4F60%u597D var str2 = unescape(str1); alert(str2); //彈出 javascript你好
2、編解碼一個(gè)URI
1、encodeURI():轉(zhuǎn)義一個(gè)URI中的字符
encodeURI() 用于編碼整個(gè)URI,因?yàn)閁RI中的合法字符都不會(huì)被編碼轉(zhuǎn)換。
語(yǔ)法:encodeURI(uri) 這個(gè)在編碼不同的AJAX請(qǐng)求時(shí),解決中文亂碼問題經(jīng)常用到。
var str1 = "你好javascript"; var str2 = encodeURI(str1); document.write(str2); //輸出:%E4%BD%A0%E5%A5%BDjavascript
2、decodeURI():解碼一個(gè)URI中的字符
語(yǔ)法:decodeURI(uri)
var str1 = "你好javascript"; var str2 = encodeURI(str1); document.write(str2); //輸出:%E4%BD%A0%E5%A5%BDjavascript var str3 = decodeURI(str2); document.write(" " + str3) //輸出:你好javascript
3、編解碼一個(gè)URI組件
1、encodeURIComponent():轉(zhuǎn)義URI組件中的字符
encodeURIComponent方法在編碼單個(gè)URIComponent(指請(qǐng)求參數(shù))應(yīng)當(dāng)是最常用的,它可以講參數(shù)中的中文、特殊字符進(jìn)行轉(zhuǎn)義,而不會(huì)影響整個(gè)URL。
var str1 = "你好javascript"; var str2 = encodeURIComponent(str1); document.write(str2); //輸出:%E4%BD%A0%E5%A5%BDjavascript
2、decodeURIComponent():解碼一個(gè)URI組件中的字符
var str1 = "你好javascript"; var str2 = encodeURIComponent(str1); document.write(str2); //輸出:%E4%BD%A0%E5%A5%BDjavascript var str3 = decodeURIComponent(str2); document.write(" " + str3) //輸出:你好javascript
二、html編碼解碼
1、html編碼解碼函數(shù)
編碼函數(shù):
function htmlEncode(str) { var s = ""; if (str.length == 0) return ""; s = str.replace(/&/g, "&"); s = s.replace(/</g, "<"); s = s.replace(/>/g, ">"); s = s.replace(/'/g, "'"); s = s.replace(/"/g, """); return s; } ;
解碼函數(shù):
function htmlDecode(str){ var s = ""; if (str.length == 0) return ""; s = str.replace(/&/g, "&"); s = s.replace(/</g, "<"); s = s.replace(/>/g, ">"); s = s.replace(/'/g, "'"); s = s.replace(/"/g, "\""); return s; }
2、用瀏覽器內(nèi)部轉(zhuǎn)換器實(shí)現(xiàn)
1.實(shí)現(xiàn)html轉(zhuǎn)碼
htmlEncode:function (html){ //1.首先動(dòng)態(tài)創(chuàng)建一個(gè)容器標(biāo)簽元素,如DIV var temp = document.createElement ("div"); //2.然后將要轉(zhuǎn)換的字符串設(shè)置為這個(gè)元素的innerText(ie支持)或者textContent(火狐,google支持) (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html); //3.最后返回這個(gè)元素的innerHTML,即得到經(jīng)過(guò)HTML編碼轉(zhuǎn)換的字符串了 var output = temp.innerHTML; temp = null; return output; }
2、實(shí)現(xiàn)html解碼
htmlDecode:function (text){ //1.首先動(dòng)態(tài)創(chuàng)建一個(gè)容器標(biāo)簽元素,如DIV var temp = document.createElement("div"); //2.然后將要轉(zhuǎn)換的字符串設(shè)置為這個(gè)元素的innerHTML(ie,火狐,google都支持) temp.innerHTML = text; //3.最后返回這個(gè)元素的innerText(ie支持)或者textContent(火狐,google支持),即得到經(jīng)過(guò)HTML解碼的字符串了。 var output = temp.innerText || temp.textContent; temp = null; return output; },
到此這篇關(guān)于JavaScript實(shí)現(xiàn)URI編碼解碼的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript 進(jìn)階篇1 正則表達(dá)式,cookie管理,userData
接下來(lái)開始我們的進(jìn)階之路,更實(shí)用的技巧分享2012-03-03ajax不執(zhí)行success回調(diào)而是執(zhí)行了error回調(diào)
最近在看jQuery的API文檔,在使用到j(luò)Query的ajax時(shí),如果指定了dataType為json,老是不執(zhí)行success回調(diào),而是執(zhí)行了error回調(diào)函數(shù),極度郁悶2012-12-12淺析四種常見的Javascript聲明循環(huán)變量的書寫方式
這篇文章主要介紹了四種常見的聲明循環(huán)變量的書寫方式,對(duì)其進(jìn)行簡(jiǎn)單的分析和比較,需要的朋友可以參考下2015-10-10JavaScript中的call方法和apply方法使用對(duì)比
這篇文章主要介紹了JavaScript中的call方法和apply方法使用對(duì)比,需要的朋友可以參考下2015-08-08JS中處理時(shí)間之setUTCMinutes()方法的使用
這篇文章主要介紹了JavaScript中處理時(shí)間之setUTCMinutes()方法的使用,是JavaScript入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06javascript:void(0)的含義及用法實(shí)例
這篇文章介紹了javascript:void(0)的含義及用法實(shí)例,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12