场景
我们保存微信自动回复内容,里面需要嵌入url跳转,我们前端入参如下:
replyContent: 测试一下<a href="https://www.baidu.com/">百度一下</a>
replyContent这个是拿String接收的,我拿到入参就长这样:
StringreplyContent="测试一下<a href=\"https://www.baidu.com/\">百度一下</a>"
存入库里的记录就成有转义的记录了,无语的还在后面,我从库里读出来他会对(/,")这两字符再次进行转义,所以保存之后给到前端的数据如下:
replyContent: 测试一下<a href=\\\"https://www.baidu.com/\\\">百度一下</a>
接下来的情况可以想象,保存查询几次之后,这个url变得不堪入目
分析
- 第一次保存的时候始终会有一层转义这个是没法避免的
- 后端可以做的是返回给前端的内容只有一层转义
- 前端保存的时候对传参进行一次去转义的操作
解决
后端:
这里用到了Apache的一个工具类StringEscapeUtils,引入maven依赖如下:
<dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.4</version></dependency>
用法如下:
publicstaticvoidmain(String[] args) { Strings=StringEscapeUtils.unescapeJava("<a href=\\\"https://www.json.cn/\\\">json</a>"); System.out.println(s); }
结果:
前端:这个我不知道,前端大佬早就处理了