网上很多都说用POST方法可以避免这个问题,但是,并没有。还有说使用encodeURIComponent()加密两次,后端再用URLDecoder解密两次的,也不行。
直接上答案:
encodeURIComponent()加密2次
URLDecoder解密1次。
为什么加密2次,但是解密1次?
var question = encodeURIComponent(encodeURIComponent(input.value))
//ajax方式,发送问句
ajax({
url : '/rest/lh/question/query?question='+question,
public String query(@RequestParam(value = "question") String question, HttpSession session,HttpServletRequest request) throws Exception {
question = URLDecoder.decode(question,"utf-8");
这是因为后端再给传入的参数赋值时,已经解码过一次了,所以,我们只需要经过一次解码即可得到原始字符串。