界面条件输入中文后,导出文件时后台打印该条件参数为乱码,因而导出文件为空。

出现问题:导出条件输入中文,后台中文变乱码,因而导出文件为空。

解决方法:1.前台JSP页面对请求参数进行两次编码,如:                

                var sp_name = $("#sp_name").val();
                if (sp_name){
                    sp_name = encodeURI(encodeURI(sp_name));
                }  

2.后台对请求参数进行一次解码,如:

        if(!"".equals(chargeRecord.getSp_name()) && chargeRecord.getSp_name()!=null){
            String name=chargeRecord.getSp_name();
            try {
                chargeRecord.setSp_name(URLDecoder.decode(name,"UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }

为什么前台需要两次编码,而后台只需要一次解码呢?

实际上呢,前台进行两次编码,后台也是两次解码,两者过程对称,才不会出现乱码。

UTF-8编码->UTF-8(iso-8859-1)编码->iso-8859-1解码->UTF-8解码。

https://blog.csdn.net/u012027337/article/details/52126475这篇文章讲的挺好。我们可以多看看了解其原理。

还有一种情况,后台查询出来的数据返回到界面时,界面却无数据,经F12调试查看,界面表单数据存在乱码。

解决方法:

注解RequestMapping里面增加参数属性produces={"text/html;charset=UTF-8;","application/json;"},如下处理:

@RequestMapping(value = "/exportSenstiveWord.html",produces={"text/html;charset=UTF-8;","application/json;"})

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值