代码之家  ›  专栏  ›  技术社区  ›  Jeff

使用java.util.zip将带有日文字符的文件名写入zip文件时会变成垃圾*

  •  3
  • Jeff  · 技术社区  · 16 年前

    有趣的是,如果我使用java.util.zip编写一个单独的脚本来读取生成的zip文件,那么目录名是正确的,并且我可以将zip的内容提取到适当命名的目录中,使用日语字符。但我无法使用我尝试过的商业zip工具来实现这一点,这无疑是我们的客户想要做的。

    关于是什么导致了这个问题,以及我如何解决这个问题,有什么想法吗?

    我知道 this bug ,但我仍然需要解决这个问题。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Kaleb Brasee    16 年前

    如果java.util.zip仍像 this post describes Chilkat's Java Zip library 之前提到过,这是一种让它发挥作用的方法,但从未使用过。

        2
  •  3
  •   Community Mohan Dere    6 年前

    TrueZIP claims to do this better:

    J2SEAPI始终使用UTF-8(八个) 条目的位(Unicode字符集) 名称和注释,而不是CP437 字符集),该字符集由 因此,您无法读或写 带有国际条目的ZIP文件 文件名,例如“t·scht.txt” 在由(南方)创建的ZIP文件中 德语。

    [省略其他问题的说明]

        3
  •  2
  •   Anton Kraievyi    16 年前

    奇迹确实发生了,Sun/Oracle确实修复了长期存在的bug/rfe:

    现在可以[在创建时设置文件名编码][1]zip文件/流( ).

    http://download.java.net/jdk7/docs/api/java/util/zip/ZipOutputStream.html#ZipOutputStream(java.io.OutputStream