学编程 ❀(๑╯◡╰๑)❀ 就上soxunxi.cn!这里有CMS,CSS,NET,PHP,Linux,HTML,JAVA,MySQL,Python等教程.
当前位置: JAVA > java zip紧缩乱码缘由与解决方法引见【JAVA教程】,java

java zip紧缩乱码的缘由与处理方法:(引荐:java视频教程)

运转环境

Jdk 1.5,win 7中文版

JDK1.5中有zip紧缩相干的API,在java.util.zip包下面。一般情况下,运用JDK自带的API把目次(文件)紧缩成zip包,步骤以下:

ZipOutputStream out = new ZipOutputStream(new FileOutputStream(file));
Out.putNextEntry(new ZipEntry(entryName));
//If entry is directory
//above codes are enough
//else if entry is file
//then the codes below is needed
FileInputStream in = new FileInputStream(infile);
byte[] bs = newbyte[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);
if(os instanceof ZipArchiveOutputStream) {
((ZipArchiveOutputStream) os).setEncoding("GBK");
}
//...some code omitted
os.putArchiveEntry(new ZipArchiveEntry(path+"/"+file.getName()));
IOUtils.copy(new FileInputStream(file), os);
os.closeArchiveEntry();

更多java学问请关注java基础教程栏目。

以上就是java zip紧缩乱码缘由与处理方法引见的细致内容,更多请关注ki4网别的相干文章!

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

分享到:
赞(0) 打赏

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"java zip紧缩乱码缘由与解决方法引见【JAVA教程】,java"

最新评论

    暂无留言哦~~

博客简介

看古风美女插画Cos小姐姐,素材合集图集打包下载:炫龙网,好看二次元插画应有尽有,唯美小姐姐等你来。

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

服务热线:
 

 QQ在线交流

 旺旺在线