jsp导出excel中文乱码,鄙视不验证就转发的

本文详细介绍了使用jsp导出excel文件时遇到的不同浏览器乱码问题,包括Firefox、IE和360等常见浏览器,并提供了解决方案。通过使用Java的URLEncoder编码方式和根据不同浏览器进行特定的字符集转换,实现了文件名在各种浏览器下都能正确显示,确保了文件导出的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp导出excel文件,导出时firefox乱码或360乱码,反正不正常,

原本代码如下:

 response.setHeader("Content-Disposition", "attachment;filename="
   + new String(("财务报表-采购明细统计.xls").getBytes(), "ISO-8859-1"));

 

这时firefox是好的,我也没测IE、360啥的

第一次提交就是这样,我相信大家也都是这个样子的,

会计说她IE打开时乱码,我就搜了一下,网上大部分提供了一个方法:

 public static String toUtf8String(String s){
   StringBuffer sb = new StringBuffer();
        for (int i=0;i<s.length();i++){
           char c = s.charAt(i);
           if (c >= 0 && c <= 255){sb.append(c);}
         else{
         byte[] b;
          try { b = Character.toString(c).getBytes("utf-8");}
          catch (Exception ex) {
              System.out.println(ex);
                   b = new byte[0];
          }
             for (int j = 0; j < b.length; j++) {
              int k = b[j];
               if (k < 0) k += 256;
               sb.append("%" + Integer.toHexString(k).toUpperCase());
               }
      }
   }
   return sb.toString();
 }

jsp里面代码如下:

 response.setHeader("Content-Disposition", "attachment;filename="
   + fb.toUtf8String("财务报表_支付宝汇总.xls"));

可是并没有解决问题,但是大部分网页搜出来的都是这样的

这时才发现是浏览器的问题

解决方案代码如下:

<%@page import="java.net.URLEncoder"%>

 

String outfilename = "财务报表.xls";
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0)
   outfilename = new String(outfilename.getBytes("UTF-8"), "ISO8859-1");//firefox

else if (request.getHeader("User-Agent").toUpperCase().indexOf("IE") > 0)
   outfilename = URLEncoder.encode(outfilename, "UTF-8");//IE浏览器 
response.setHeader("Content-Disposition", "attachment;filename="+outfilename);

这才是王道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值