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的那个除外,这个是我们最常见的转义字符

posted @ 2022-03-22 10:30  前端加油站  阅读(674)  评论(0编辑  收藏  举报