在用location.href进行页面跳转时,如果参数有中文的话,很有可能会出现中文乱码的情况,解决方法如下
如果传的参数是一个字段,比如inquireName='张三',如果按照下面的格式下写就会出现乱码
window.location.href = "/user/inquire?&userName="+inquireName;
必须这么写
window.location.href = "/user/inquire?&userName="+encodeURI(encodeURI(inquireName));
如果传的参数是多个,比如下面这样
getParam : function() { var params = { visitReason : $("input[name='visitReason2']").val(), visitTime : $("input[id='visitTime']").val(), visitorNum : $("input[name='visitorNum']").val(), workplaceID:$("input[name='workplaceID2']").attr("optionValue"), } return params; }
则必须这么写
var params = JSON.stringify(that.getParam()); var paramsClear = encodeURI(encodeURI(params); var url = '/bespeak/export'; location.href = url + "?queryJson="+paramsClear;
这2种方式在controller层都需要进行解码,代码如下
@RequestMapping("/export") public void export(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "queryJson") String queryJson) throws UnsupportedEncodingException { //解决中文乱码的问题 queryJson = URLDecoder.decode(queryJson,"utf-8"); BespeakVo bespeakVo = JSON.parseObject(queryJson,BespeakVo.class); }