美文网首页
ZipOutputStream压缩包内中文文件名乱码

ZipOutputStream压缩包内中文文件名乱码

作者: 让你变好的过程从来都不会很舒服 | 来源:发表于2021-10-08 11:30 被阅读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;
    }

相关文章

网友评论

      本文标题:ZipOutputStream压缩包内中文文件名乱码

      本文链接:https://www.haomeiwen.com/subject/ctqxoltx.html