问题场景

今天排查问题,遇到一个BUG

页面前端传值:

Hello+ World

传到后台变成了

Hello World

一开始没有怀疑这个问题,那到底是为什么呢?

URL 的转移

URL 会对 + 进行转义。

解决方案

修改客户端

将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了。

加密+解密配合

strURL = "search.do?param=" + encodeURIComponent(str);

普通的传参出现乱码问题,可使用encodeURI来转译,它会转译成UTF-8的格式;

strURL = "search.do?param=" + encodeURI(str);

参考资料