1、js前段使用URL参数传递或者使用Ajax传递参数,如果参数中存在中文或者存在特殊字符(/*@#$...),后台接受时就会存在乱码。解决方案js前段使用encodeURIComponent函数把URI字符串采用UTF-8编码格式转化成escape格式的字符串,后台接受时可以使用多种方法转回UTF-8格式。(
1). URLDecoder.decode(request.getParameter("param"),"UTF-8");
2).decodeURI(request.getParameter("param"))
)
示例代码如下:
javascript代码encode
function findNE(){
var nd = document.getElementById("NE").value;
nd = encodeURIComponent(encodeURIComponent(nd));
alert(nd);
$.fn.zTree.destroy("netree");
setting.async.url="common/getNeList.action?seachName="+nd;
$.fn.zTree.init($("#netree"), setting);
}
java代码decode
String serchName = request.getParameter("seachName");
System.out.println("serchName1::::::::::::::::::::::"+serchName);
if(StringUtils.isNotBlank(serchName)){
try {
serchName = java.net.URLDecoder.decode(serchName,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
System.out.println("serchName2::::::::::::::::::::::"+serchName);
2、如果前台使用URL传递参数没有使用函数进行转码,后台接受如果出现乱码可以是以下方案解决,如下:
String param = new String(request.getParameter("param").getbytes("ISO-8859-1"),"UTF-8");