一、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解码
标签:编码,stringify,unescape,escape,js,JSON,key,playitemArr From: https://www.cnblogs.com/ZhuMeng-Chao/p/17014130.html