js使用escape编码、unescape解码、base64编码、base64解码
一、js使用escape编码
编码前
//编码前的JSON.stringify(playitemArr)" console.error("编码前的JSON.stringify(playitemArr)"); console.error(JSON.stringify(playitemArr));
实例数据如图:--【playitemArr为一个数组,数组序列化后并编码前的结果】 var playitemArr = new Array();
编码后
//编码后的escape(JSON.stringify(playitemArr)) console.error("编码后的"); console.error(escape(JSON.stringify(playitemArr)));
实例数据如图:
出现错误:
当前本人通过编码需要在js的ajax请求中将编码后的数据传参给另一个页,只经过上面 escape(JSON.stringify(playitemArr))将数组序列化并编码后传递会出现错误
错误如图:
问题:
在做页面搜索功能的时候,需要URL地址中拼接查询关键字(key),然后 跳转到拼接后的地址(https://xxx.com/search?q=key)。如果key里面有中文字,浏览器会默认编码掉,所以这个页面调查询接口的时候需要先解码(/api/search?content=解码后的key),出现了上面的错误。
原因:
查询关键字包含一些浏览器敏感的关键词,例如:# , & , =,而导致报错的是 % ,是因为编码汉字是 % 开头的,多加一个 % 会导致 decodeURIComponent 执行报错。
解决:
在点击查询拼接关键字key的时候,对key中含有敏感的词进行转译,例如,将%号转译为 %25
其他一些关键字的编码对应为:
特殊字符 含义 编码 % 指定特殊字符 %25 # 表示锚点 %23 & URL Search分隔符 %26 = URL中指定参数的值 %3D
解决:--替换特殊字符
console.error(escape(JSON.stringify(playitemArr)).replace(/%/g, '%25'));
错误问题解决;
二、js使用unescape解码
解码前的数据
console.error("解码前的playlistItem"); console.error(playlistItem);
解码后的数据
console.error("解码后的unescape(playlistItem)"); console.error(unescape(playlistItem));
三、base64编码
编码前数据:
base64编码
window.btoa(offer.sdp); //base64编码
base64编码后的数据
三、base64解码
base64解码前的数据
base64解码
window.atob(Answer); // 解码
base64解码后的数据
本文来自博客园,作者:じ逐梦,转载请注明原文链接:https://www.cnblogs.com/ZhuMeng-Chao/p/17014130.html