Java创建的.zip文件不支持中文(utf-8)

时间:2010-11-18 07:36:04

标签: java compression zip

我想使用Java(jdk,ant.jar或commons-compress)创建.zip文件。

但是如果ZipEntry的名称包含非英语(例如中文,日语),它将在WinRAR或Windows Compress中显示不可读的代码(在WinRAR中正确压缩显示)。

谁能帮助我!!!

3 个答案:

答案 0 :(得分:1)

您已点击其中一个Top 25 java bug

好消息是这已经解决了。坏消息它仅在JDK 7中修复。有关详细信息,请参阅this entry

或者,您可以使用Arcmexer(只读)。

答案 1 :(得分:1)

尝试使用apache commons compress,

import java.io.*;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
public class ZipFiles {  
   public static void main(String[] args) throws Exception{
       ZipArchiveOutputStream zipOut = new ZipArchiveOutputStream(new FileOutputStream("测试.zip"));
       zipOut.setEncoding("Cp437"); // This should handle your "special" characters
       zipOut.setFallbackToUTF8(true); // For "unknown" characters!
       zipOut.setUseLanguageEncodingFlag(true);                               
       zipOut.setCreateUnicodeExtraFields(
       ZipArchiveOutputStream.UnicodeExtraFieldPolicy.NOT_ENCODEABLE);
       zipOut.putArchiveEntry(new ZipArchiveEntry("测试.xml"));
       zipOut.putArchiveEntry(new ZipArchiveEntry("test.xml"));
       zipOut.closeArchiveEntry();
       zipOut.flush();
       zipOut.close();
   }
}

答案 2 :(得分:-1)

看看7-Zip-JBinding它是7zip的Java包装器。