解决location.href中文乱码

在用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);
}

猜你喜欢

转载自blog.csdn.net/u011900448/article/details/79385226