下载文件中文名出现乱码 java


//--------------------------------------------------------
//1 根据不同浏览器区分解决乱码
//--------------------------------------------------------
String filename= "..."; //文件名
String path = "../../.."; //路径

//获取浏览器类型 :Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 (.NET CLR 3.5.30729)
String agent = request.getHeader("USER-AGENT");
String downLoadName = null;
if (null != agent && -1 != agent.indexOf("MSIE")) //IE
{
downLoadName = java.net.URLEncoder.encode(filename, "UTF-8");
}
else if (null != agent && -1 != agent.indexOf("Mozilla")) //Firefox
{
downLoadName = new String(filename.getBytes("UTF-8"),"iso-8859-1");
}
else
{
downLoadName = java.net.URLEncoder.encode(filename, "UTF-8");
}
response.setHeader("Content-disposition", "attachment;filename="
+ downLoadName );
response.setContentType("application/vnd.ms-excel;charset=UTF-8");

//以下就是文件输出代码了
try {
FileInputStream fileInputStream = new FileInputStream(path
+ filename);
OutputStream out = response.getOutputStream();
int i = 0;
while ((i = fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}

//--------------------------------------------------------
//2 最近看了一下,发现解决乱码不用关心浏览器,可以简单搞定
//--------------------------------------------------------
String filename= "..."; //文件名
String path = "../../.."; //路径
response.setContentType("octets/stream");
response.addHeader("Content-Type", "text/html; charset=utf-8");
String downLoadName = new String(filename.getBytes("gbk"), "iso8859-1");
response.addHeader("Content-Disposition", "attachment;filename="
+ downLoadName);
//以下加入输出代码就好了

展开阅读全文

没有更多推荐了,返回首页