File names with Japanese characters turn to garbage when written to a zip file using java.util.zip.*

后端 未结 3 1669
粉色の甜心
粉色の甜心 2021-01-20 11:00

I have a directory with a name that contains Japanese characters, and I need to use the zip utils in java.util.zip to write it to a zip file. Writing the zip file succeeds,

相关标签:
3条回答
  • 2021-01-20 11:33

    Miracles indeed happen, and Sun/Oracle did really fix the long-living bug/rfe:

    Now it's possible to [set up filename encodings upon creating][1] the zip file/stream (requires Java 7).

    [1]: http://download.java.net/jdk7/docs/api/java/util/zip/ZipOutputStream.html#ZipOutputStream(java.io.OutputStream, java.nio.charset.Charset)

    0 讨论(0)
  • 2021-01-20 11:38

    If java.util.zip still behaves as this post describes, I'm not sure if it is possible (with the built-in classes). I have seen Chilkat's Java Zip library mentioned before as a way to get this to work, but have never used it.

    0 讨论(0)
  • 2021-01-20 11:38

    TrueZIP claims to do this better:

    The J2SE API always uses UTF-8 (eight bit Unicode character set) for entry names and comments instead of CP437 (a.k.a. IBM437, the genuine IBM-PC character set), which is used by the de-facto standard PKZIP from PKWARE. As a result, you cannot read or write ZIP files with international entry file names such as e.g. "täscht.txt" in a ZIP file created by a (southern) German.

    [description of other problems omitted]

    The TrueZIP Library has been developed to overcome these limitations/disadvantages.

    0 讨论(0)
提交回复
热议问题