您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页java压缩zip文件中文乱码问题解决方法

java压缩zip文件中文乱码问题解决方法

来源:爱够旅游网
java压缩zip⽂件中⽂乱码问题解决⽅法

通常⽤java来打包⽂件⽣成压缩⽂件后,有如下两个地⽅会出现乱码 :

1、内容的中⽂乱码问题,这个问题⽹上很多⼈给出了解决⽅法,主要有两种⽅法:⼀是修改sun的源码;另⼀个是使⽤开源的类库org.apache.tools.zip.ZipOutputStream和org.apache.tools.zip.ZipEntry,这两个类ant.jar中有,可以直接下载使⽤即可,毫⽆疑问,选择后者更⽅便

2、压缩⽂件注释的中⽂乱码问题:zos.setComment(\"中⽂测试\");这个问题⽹上对应的解决⽅法资料较少。在⾃⼰机器上的⼯程创建的测试类,没有任何问题,但是在公司的项⽬中使⽤⼀直出现乱码,通过使⽤设置编码的⽅法

(zos.setEncoding(\"gbk\");)终于发现了问题,测试项⽬的编码⽅式为gbk,⽽公司项⽬的默认编码是utf-8,所以测试项⽬没问题⽽公司的项⽬中出现了问题。

org.apache.tools.zip.ZipOutputStream默认使⽤项⽬的编码⽅式,理论上讲utf-8也是⽀持中⽂的,实在想不通为啥还是乱码,通过setEncoding⽅法改成gbk即可解决针对上述问题的⽰例代码如下:

package com.compress;

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.File;

import java.io.FileInputStream;import java.io.FileOutputStream;

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

public class CompressEncodingTest { /**

* @param args

* @throws Exception */

public static void main(String[] args) throws Exception { File f = new File(\"中⽂测试.txt\");

ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream( new FileOutputStream(\"zipTest.zip\"), 1024)); zos.putNextEntry(new ZipEntry(\"中国⼈.txt\"));

DataInputStream dis = new DataInputStream(new BufferedInputStream( new FileInputStream(f)));

zos.putNextEntry(new ZipEntry(f.getName())); int c;

while ((c = dis.read()) != -1) { zos.write(c); }

zos.setEncoding(\"gbk\");

zos.setComment(\"中⽂测试\"); zos.closeEntry(); zos.close(); }}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务