原标题:js传特殊字符到controller (java)的转码问题
1.一串特殊字符
\\&\\,\_)(*&^)\,\\。\\+_}
2.ajax请求
$.ajax({
url: $("#contextPath").val + "/test",
type: "POST",
data: {str: '\\&\\,\_)(*&^)\,\\。\\+_}'}
});
3.controller
import java.net.URLDecoder;
import java.net.URLEncoder;
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public Object searchCompany(String str, HttpServletRequest request) {
try {
log.info(str);
//java接收到的,被转码了,
//打印结果: \\&\\,\_)(*&^)\,\\。\\+_}
str = request.getParameter("str");
str = URLEncoder.encode(companyName, "ISO8859-1"); //编码
str = URLDecoder.decode(companyName, "UTF-8"); //解码
log.info(str);
//处理后
//打印结果:\\&\\,\_)(*&^)\?\\?\\+_}
} catch (UnsupportedEncodingException e) {
e.printStackTrace;
}
}
第一个log打印的是:\&\,_)(&^)\,\。\+_} java转码了。
第二个log打印的是:\&\,_)(&^)?\?\+_} js传来的
总结
先编码,再解码。
责任编辑: