Java中进行文件压缩时,设置压缩文件注释,中文乱码,求指教

买菜做饭 2016-03-02 09:39:22
今天在学习java压缩流时发现一个问题,就是在给压缩文件设置中文注释,出现乱码 ,我想应该是中文字的编码方式的不对 ,但是我修改编码方式之后还是不行,请指教。


package io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipOutputStreamAndZipInputStream {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file = new File("F:"+File.separator+"test.txt");

File zipFile = new File("F:"+File.separator+"test.zip");

InputStream in = new FileInputStream(file);

ZipOutputStream zipout = new ZipOutputStream(new FileOutputStream(zipFile));

zipout.putNextEntry(new ZipEntry(file.getName()));
zipout.setComment("这是一个复杂的问题");
//zipout.setComment(new String("这是一个复杂的问题".getBytes("gbk"))); //还是不行

int temp = 0;

while((temp = in.read())!= -1){
zipout.write(temp);
}
in.close();
zipout.close();
}

}



...全文
256 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
买菜做饭 2016-03-03
  • 打赏
  • 举报
回复
谢谢 你说的对 我之前查的是1.6的API里面没有这个构造函数,今天去了一下1.8 的API,发现是有的 问题解决了。被坑了
买菜做饭 2016-03-02
  • 打赏
  • 举报
回复
引用 2楼huntor 的回复:
ZipOutputStream使用U8保存的注释。软件使用GBK打开成乱码
怎么解决
买菜做饭 2016-03-02
  • 打赏
  • 举报
回复
引用 1楼scmod 的回复:
这个是不是因为你的工程师utf-8的,但是系统软件打开来默认的是系统的编码,默认一般是"gbk"所以才会乱码啊..
并不是,我把工程设置为GBK还是不行
huntor 2016-03-02
  • 打赏
  • 举报
回复
ZipOutputStream使用U8保存的注释。软件使用GBK打开成乱码
huntor 2016-03-02
  • 打赏
  • 举报
回复
引用 4 楼 shallynever 的回复:
引用 2楼huntor 的回复:
ZipOutputStream使用U8保存的注释。软件使用GBK打开成乱码
怎么解决
public ZipOutputStream(OutputStream out, Charset charset)
使用这个构造方法,传入GBK,这样里面的文件名和注释都是GBK编码了
scmod 2016-03-02
  • 打赏
  • 举报
回复
这个是不是因为你的工程师utf-8的,但是系统软件打开来默认的是系统的编码,默认一般是"gbk"所以才会乱码啊..

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧