关于重定向传参及request.getParameter中文乱码问题-2021-05-20

重定向传参中文乱码问题

最近项目上遇到通过重定向请求url中参数为中文乱码问题,记录解决方法。
jsp 代码如下

var bak0Ser = $("#bak0Ser").val();
	document.forms[0].action = "/BwinPM/project/supplierPersonnel/supplierPersonnelStationLocal.do?stationLocalId="+depId+"&stationNumberSer="+stationNumberSer+"&bak0Ser="+bak0Ser;
      <input id="stationNumberSer"  type="hidden" name="stationNumberSer" value="${stationNumberSer}">  
      <input id="bak0Ser"  type="hidden" name="bak0Ser" value="${bak0Ser}">  

java代码如下

    request.setAttribute("stationNumberSer", stationNumberSer);
    request.setAttribute("bak0Ser", bak0Ser);
        String url = "redirect:supplierPersonnelStationCheck.do?timestamp=" + System.currentTimeMillis();
    if (null != parm && !"".equals(parm)) {
      url += "&parm=" + parm;
    }
    if (null != stationNumberSer && !"".equals(stationNumberSer)) {
      url += "&stationNumberSer=" + stationNumberSer;
    }
    if (null != bak0Ser && !"".equals(bak0Ser)) {

      url += "&bak0Ser=" + bak0Ser;
    }
    return url;
  }

controller层通过request.setAttribute()设置参数 jsp页面将参数放置隐藏域内,通过jq读取参数,通过alert发现参数读取正常,controller层request.getParameter()获取参数同样正常,debug发现,参数通过重定向传参之后显示乱码。
解决方法:
bak0Ser = URLEncoder.encode(bak0Ser, “utf-8”); 传参之前将中文参数编码
接受端正常通过request.getParameter();获取参数即可。

request.getParameter中文乱码问题

jsp通过post方法表单提交
url参数中带中文,后台通过request.getParameter()方法获取参数出现中文乱码问题 解决方法如下:

  1. Apache版本问题,不同版本的Apache关于编码的方式可能不同(配置文件有关于编码格式的配置),乱码时Apache的版本为7.0,更新到8.5之后问题解决。
  2. String bak0Ser = new String(request.getParameter("bak0Ser").getBytes("iso-8859-1"), "utf-8");
    通过getBytes方法浏览器的编码格式为 iso-8859-1,转换成 utf-8
    这两种方式都可以解决乱码问题,推荐第一种,不然以后关于乱码问题可能都需要加代码,不利于代码维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值