java压缩zip文件中文乱码问题 linux 下
2014-07-08 16:10
399 查看
ant.jar
import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream;
public void workZips(String zipName,String fileName,List<File> fileList) throws Exception{ byte[] buffer = new byte[1024]; String filepath = ServletActionContext.getServletContext().getRealPath("file") +"/"+memberId+ "/zip/"; File directory = new File(filepath); if (!directory.exists()) { FileUtils.forceMkdir(directory); } //生成的ZIP文件名为Demo.zip ZipOutputStream out = new ZipOutputStream(new FileOutputStream(filepath+fileName+".zip")); out.setEncoding("gbk"); //需要同时下载的两个文件result.txt ,source.txt for(int i=0;i<fileList.size();i++) { FileInputStream fis = new FileInputStream(filepath+fileList.get(i).toString().split(";")[1]+".zip"); out.putNextEntry(new ZipEntry(fileList.get(i).toString().split(";")[1]+".zip")); int len; //读入需要下载的文件的内容,打包到zip文件 while((len = fis.read(buffer))>0) { out.write(buffer,0,len); } out.closeEntry(); fis.close(); //删除被合并的zip this.deleteFile(filepath+fileList.get(i).toString().split(";")[1]+".zip"); } out.close(); }
out.setEncoding("gbk"); 这里很关键,你要是不设置的话,默认获取系统编码;这样设置,在linux下压缩zip,在window系统解压就不会出现乱码了
</pre><pre code_snippet_id="422359" snippet_file_name="blog_20140708_6_3093008" name="code" class="java">注:我们写文件的时候使用UTF-8的编码来写文件名的,这个时候-- 奇迹出现了“乱码”,为什么呢? GBK每个汉字占2个字节,而UTF-8每个汉字占3个字节,它们所占字节数都不一样,乱码是必须的
相关文章推荐
- Java压缩解压zip文件的中文文件名在Windows和Linux环境下乱码问题的解决方案
- java压缩zip文件中文乱码问题(转)
- java压缩zip文件中文乱码问题
- java压缩zip文件中文乱码问题解决方法
- java压缩zip文件中文乱码问题(转——作者:riching)
- Java文件名包含中文的文件压缩后文件名乱码问题,完美解决方案
- Java实现Zip压缩与解压(解决中文乱码问题)
- Linux下Java程序中文乱码问题
- Java在linux中文乱码问题
- 通过java解决linux下解压来自window生成的zip文件的乱码问题
- linux下Java程序插入DB数据中文乱码问题
- 关于使用java自带ZipOutputStream压缩文件名为中文的乱码问题
- 解决Linux下Java控制台中文乱码问题
- JAVA压缩 解压缩zip 并解决linux下中文乱码
- java压缩文件,解决中文乱码问题!
- org.apache.tools.zip在Linux下压缩文件中文乱码问题解决
- JAVA压缩 解压缩zip 并解决linux下中文乱码
- JAVA压缩 解压缩zip 并解决linux下中文乱码
- Java压缩中文乱码问题
- linux下,java中SVG和jfreechart应用中,中文有乱码问题