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

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值