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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。