ZipOutputStream压缩包内中文文件名乱码
2021-10-08 本文已影响0人
让你变好的过程从来都不会很舒服
分析问题:
原先使用的是java.util.ZipOutputStream,而在这个类中,没有设置编码的方法;因此每次遇到中文的时候,都会变成乱码;
解决方案:
采用org.apache.tools.zip.ZipOutputStream类中的setEncoding()方法;需引入ant-1.7.1.jar
jar包下载:https://download.csdn.net/download/su1573/12106896
代码示例: 亲测有效
tZipOutputStream.setEncoding("GBK");
//压缩包的绝对路径,文件的绝对路径,压缩后的一级文件夹的名字
public boolean zipFiles()
{
ZipOutputStream tZipOutputStream=null;
try
{
tZipOutputStream = new ZipOutputStream(new FileOutputStream(OutName));
//注意此处编码设置 支持中文
tZipOutputStream.setEncoding("GBK");
BaseName = BaseName.length() == 0 ? "" : BaseName + "/";
for(int i=0;i<FileName.length;i++)
{
File in = null;
if("contract".equals(Operator[i])){
zip(tZipOutputStream,FileName[i],BaseName+FileOldName[i]);
}else{
in=new File(FileName[i]);
zip(tZipOutputStream,in,BaseName+FileOldName[i]);
}
}
tZipOutputStream.close();
}
catch(Exception ex)
{
log.debug(ex.toString());
try
{
tZipOutputStream.close();
}
catch(Exception e)
{
log.debug(e.toString());
}
return false;
}
return true;
}