ZIP-файл, созданный Java, не поддерживает китайский (utf-8) - PullRequest
2 голосов
/ 18 ноября 2010

Я хочу создать файл .zip с использованием Java (jdk, ant.jar или commons-compress).

Но если имя ZipEntry содержит не английский язык (например, китайский, японский), он будет отображать нечитаемый код в WinRAR или Windows Compress (обычное отображение сжимается в WinRAR).

Кто может мне помочь !!!

Ответы [ 3 ]

1 голос
/ 03 февраля 2014

попробуйте это с помощью 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();
   }
}
1 голос
/ 18 ноября 2010

Вы попали в одну из Топ-25 ошибок Java .

Хорошая новость в том, что это уже решено.Плохая новость - это исправлено только в JDK7.Подробнее см. в этой записи .

Альтернативно, вы можете использовать Arcmexer (только чтение).

0 голосов
/ 18 ноября 2010

Посмотрите на 7-Zip-JBinding это оболочка Java для 7zip.

...