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解码后的数据

 

posted @ 2022-12-30 09:51  じ逐梦  阅读(568)  评论(0编辑  收藏  举报