【摘要】本文主要記錄幾種轉義函數
【作者】 明月
第一部分:需求場景描述
小程序內嵌H5項目,項目需要在原生小程序代碼中調起支付,支付完成之後跳轉至指定頁面,小程序的殼為瞭方便統一維護做成瞭標準化的形式,因此在H5跳轉至支付頁面的時候,約定帶一個跳轉頁面參數,跳轉的鏈接可能會有多種符號,因此要進行轉義操作。
第二部分:轉義函數
① escape()和unescape():escape()和unescape()函數對特殊字符進行編碼(ASCII字符),但以下字符除外: * @ – _ + . /
② encodeURI()和decodeURI():操作的是完整的url,假定一個URL中所有分隔符都有意義,所以不會進行編碼: , / ? : @ & = + $ #
③ encodeURIComponent()和decodeURIComponent():操作url個別組件,假定任何保留字符都代表普通文本,所以必須編碼它們,該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: – _ . ! ~ * ' ( ) 。
第三部分:三種方法轉義對比,結合需求,要對URL組件進行轉義,因此選用encodeURIComponent()轉義函數進行操作。
var link1=escape('index.html#/front_page_index?redirect=order&ship_state=1&append_order_remark_019=1902');
var link2=encodeURI('index.html#/front_page_index?redirect=order&ship_state=1&append_order_remark_019=1902');
var link3=encodeURIComponent('index.html#/front_page_index?redirect=order&ship_state=1&append_order_remark_019=1902');
console.log(link1)
console.log(link2)
console.log(link3)