java zip压缩文件名 乱码,java压缩文件中文乱码

  java zip压缩文件名 乱码,java压缩文件中文乱码

  如何解决写爬虫IP受阻的问题?立即使用。

  java zip压缩乱码的原因及解决方法:(推荐:java视频教程)

  运行时环境

  Jdk 1.5,win 7中文版

  JDK1.5中有与zip压缩相关的API,在java.util.zip包下。一般情况下,使用JDK自己的API将目录(文件)压缩成zip包。步骤如下:

  ZipOutputStream out=new ZipOutputStream(new file output stream(file));

  Out.putNextEntry(新zip entry(entry name));

  //如果条目是目录

  //以上代码足够了

  //如果条目是文件,则为else

  //然后需要下面的代码

  file inputstream in=new file inputstream(infile);

  byte[]bs=new byte[1024];

  int b=0;

  while((b=in.read(bs))!=-1) {

  zos.write(bs,0,b);

  }

  in . close();如果要打包的目录名或文件名包含中文字符,这些目录或文件名会出现乱码。原因是在JDK自己的API里,写ZipEntry的时候,默认编码是UTF8(好像只有这一个,没办法改。据说Java7有所改进)。但中文版win7操作系统在处理zip文件时使用GBK编码,编解码过程不同,导致win7中的打包文件。

  可以采用的解决方案是利用第三方API实现zip压缩,解决中文乱码问题。下面是使用apache的compress实现zip压缩,需要的jar包是commons-compress-1.2.jar。

  ArchiveOutputStream OS=new ArchiveStreamFactory()。createArchiveOutputStream(ArchiveStreamFactory。ZIP,out);

  ZipArchiveOutputStream的操作系统实例){

  ((zipcarchiveoutputstream)OS)。set encoding(“GBK”);

  }

  //.省略了一些代码

  OS . putarchiveentry(new zip archive entry(path / file . getname()));

  IOUtils.copy(新文件输入流(文件),操作系统);

  OS . closearchiveentry();更多java知识,请关注java基础课程专栏。以上就是java zip压缩乱码的原因和解决方案的详细说明。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: