代码之家  ›  专栏  ›  技术社区  ›  Jason Li

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

  •  2
  • Jason Li  · 技术社区  · 14 年前

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

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

    谁能帮我!!!

    3 回复  |  直到 14 年前
        1
  •  1
  •   Bill the Lizard Alexis MP    12 年前

    你击中了其中一个 Top 25 java bug .

    好消息是这已经解决了。坏消息是它只在JDK7中被修复。见 this entry 详细情况。

    另外,您可以使用 Arcmexer (只读)。

        2
  •  1
  •   mathi    10 年前

    尝试使用apache commons压缩,

    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();
       }
    }
    
        3
  •  -1
  •   Carlos Tasada    14 年前

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