jsp导出excel中文乱码,鄙视不验证就转发的
2012-02-28 15:38
246 查看
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);
这才是王道
原本代码如下:
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);
这才是王道
相关文章推荐
- 解决Ext Grid导出Excel在JSP等环境中文乱码问题(支持Windows和Aix)
- jsp导出excel 解决文件名中文乱码
- JSP导出excel时中文乱码的问题
- jsp将table导出成excel+用js将table导出excel,中文乱码问题解决方案+action层导出excel
- JSP应用导出Excel报表的简单实现以及中文乱码彻底解决(HTML)
- JAVA中JSP应用导出Excel报表的简单实现以及中文乱码彻底解决(HTML)
- jsp将table导出成excel+用js将table导出excel,中文乱码问题解决方案+action层导出excel
- JSP应用导出Excel报表的简单实现以及中文乱码彻底解决(HTML)
- jsp导出excel 解决文件名中文乱码
- JSP应用导出Excel报表的简单实现以及中文乱码彻底解决(HTML)(转)
- JSP导出Excel 中文文件名乱码
- JSP动态输出Excel及中文乱码的解决
- PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解,解决PHP下载文件名中文乱码
- 把DataTable内容导出excel并返回客户端,修改导出中文乱码的问题
- Java POI Excel导出文件名中文乱码
- JSP动态输出Excel及中文乱码的解决
- asp.net 导出excel 中文乱码解决方法 (转)
- Java POI Excel导出文件名中文乱码
- PL/SQL Developer 导出csv文件,用excel打开中文显示乱码
- 奇异怪事-DataGrid的数据导出Excel中文乱码