Java 流下载文件,不显示中文名称

本文介绍了一种解决在Java中通过流下载带有中文名称的文件时出现乱码的方法。核心技巧在于使用ISO-8859-1编码处理文件名,确保在不同浏览器和操作系统间正确显示。

在使用 java 流下载文件的时候,文件名称如果是中文,出现乱码的情况。解决办法:

FileName 使用 “ISO-8859-1” 编码。

public static void downloadZip(File file, HttpServletResponse response) {
    	try {
    		BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file.getPath()));
    		byte[] buffer = new byte[fis.available()];
    		fis.read(buffer);
    		fis.close();
    		
    		String fileName = new String(file.getName().getBytes(), "ISO-8859-1"); // 压缩包中文名称,不然乱码
    		response.reset(); 
			response.setCharacterEncoding("UTF-8");
			response.setContentType("application/octet-stream");
			response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
			
			OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
			toClient.write(buffer);
			toClient.flush();
			toClient.close();
			//file.delete();        //将生成的服务器端文件删除
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
		}
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值