一、前言
最近前端用get请求给后台传参数时,发现直接传的话,有些特殊符号会丢失;
因此前端就用urlEncode处理了下,再发给后端。
var str = encodeURIComponent('a+b===')
后端是这样接收的,urlDecode了一下:
@GetMapping("/myurl")
public JSONObject example(@RequestParam(required = true) String str) throws Exception {
String decodeStr = URLDecoder.decode(openId,"UTF-8");
......
}
结果发现,收到的结果是:
a b===
与前端传来的不一致,加号丢了。
二、问题原因与解决方法
排查了半天,发现,后端Controller里收到的参数,被自动urlDecode
了;
也就是说,后端str
的值已经是urlDecode后的值,a+b===
;
后续自己再urlDecode的话,部分特殊符号就会丢了(起码加号确实是丢了),decodeStr
就变成了a b===
。
解决方法,当然就是后端直接使用、不要再自己urlDecode了。