H5和安卓的转义字符问题
问题记录
1. 问题描述
嵌入到APP中的H5页面在获取原生APP拿到的二维码串时出现了个别字符转义的问题,但是在IOS手机上并没有出现此问题。
2. 问题解决
了解到安卓手机传给H5的JSON串在底层做了转义,如果传给H5的JSON串不做转义的话,在传值的时候就会有问题,存在传递不过来的情况,因此H5对这一转义过的字符串又再一次进行转义,其实也就是还原。
3. 解决方案
function reductStr(str){
let code = str.replace(/%25/g,'%') // 安卓对%做了转义
code = code.replace(/%20/g,' ')
code = code.replace(/%2B/g,'+')
code = code.replace(/%23/g,'#')
code = code.replace(/%26/g,'&')
code = code.replace(/%3D/g,'=')
code = code.replace(/%7B/g,'{') //安卓对{做了转义
code = code.replace(/%7D/g,'}') //安卓对}做了转义
code = code.replace(/%22/g,'"') //安卓对"做了转义,一般不会涉及到这个引号,这里也写出来,防止后续用到时漏掉
return code
}
从上述函数可以看到一般项目中,安卓对字符串的转义一般只会做上述有注释的几种。没有注释的则是在日常JS转义中也会经常遇到的,%25
的那个除外,这个是我们最常见的转义字符
本文来自博客园,作者:前端加油站,转载请注明原文链接:https://www.cnblogs.com/bllx/p/16038170.html