JS前段传递参数到后台出现乱码

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");

 

 

你可能感兴趣的:(传递参数)