js中有很多函數可以用來轉義和反轉義,如escape()和unescape()、encodeURI()和decodeURI()、encodeURIComponent()和decodeURIComponent()等。
1.escape()和unescape()
escape()函數將參數轉換為字符串,並以URL編碼的格式進行編碼。在這種格式中,所有空格、標點、重音符號以及其他非ASCII字符都要%xx十六進制序列碼代替。如空格的返回時%20。
escape(param);
參數param是轉換為字符串並以URL編碼格式進行編碼的表達式。
unescape()功能恰好相反,將URL編碼格式字符串進行解碼返回字符串。
unescape(param);
例如:
escape("Hello{[World]}");
轉義結果為:Hello%7B%5BWorld%5D%7D
unescape("Hello%7B%5BWorld%5D%7D")
返回結果:Hello{[World]}
缺點:escape()和unescape()只能處理ASCII字符,不推薦使用這兩個方法進行轉義、解碼。
2.encodeURI()和decodeURI()
encodeURI()函數將文本字符串編碼為一個有效的統一資源標識符(URI)。而decodeURI()將URI解碼為一般字符串。
encodeURI(param);
param是一個將被編碼的字符串
decodeURI(param);
恰恰相反
例如:
encodeURI("Hellow{[World]}")
轉義結果為:Hello%7B%5BWorld%5D%7D
decodeURI("Hello%7B%5BWorld%5D%7D")
返回結果:Hello{[World]}。
注意:
encodeURI()函數單靠自身不能形成HTTP GET請求或者POST請求,因為&、+、=都不會被轉碼,這幾個字符在GET或POST請求中被作為特殊字符對待。
3.encodeURIComponent()和decodeURIComponent()
這兩個函數也是用來編碼和解碼
decodeURIComponent(URIString)
URIString為一個已編碼的URI組件。
encodeURIComponent(URIString)
encodeURIComponent()可以轉換除英文字母、數字、-、_、.、!、~、*、'、(、)外的所有字符