Ich möchte eine Datei unter Windows (7) mit ZipOutputStream
zippen. Das Problem ist, dass der Dateiname (und auch der Inhalt der Datei) auch griechische Zeichen enthält ("ГП0000660040140521_a.txt
", Gamma und Pi). Der Code zip Datei Ich verwende:"IllegalArgumentException: UNMAPPABLE [1]" beim Zippen einer Datei mit griechischen Zeichen
ZipOutputStream zipOs = new ZipOutputStream(
new FileOutputStream("c:\\temp\\test.zip"), Charset.forName("cp737")
);
File sourceFile = new File("C:/Path/To/File/ГП0000660040140521_b.txt");
String entryName = sourceFile.getName().replaceAll("\\\\", "/");
ZipEntry entry = new ZipEntry(entryName);
zipOs.putNextEntry(entry);
...
...
Aber in der letzten Zeile (der putNextEntry
Anruf) bekomme ich ein IllegalArgumentException
:
java.lang.IllegalArgumentException: UNMAPPABLE[1]
at java.util.zip.ZipCoder.getBytes(ZipCoder.java:95)
at java.util.zip.ZipOutputStream.writeLOC(ZipOutputStream.java:407)
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:221)
ich dort übernehmen muss etwas falsch mit der Zeichenzuordnung sein zwischen Griechisch und UTF-8 ... Was ist der richtige Weg, um eine Datei mit griechischen Zeichen im Dateinamen zu komprimieren?
EDIT
Wenn ich „utf-8“ als Zeichen der Zip-Datei erstellt werden kann, festgelegt, aber der Name der Zip-Datei ist falsch: „ðôðƒ0000660040140521_a.txt
“ (die griechischen Buchstaben fehlen)
Was macht die createZipEntry-Methode? – agad
@agad: Mein Fehler! Ich habe den Code korrigiert. Vielen Dank. – Steffen
Wenn Sie sagen, der Name ist "falsch", wie genau verifizieren Sie das? Welches Tool verwenden Sie, um die ZIP-Datei zu untersuchen, und sind Sie sicher, dass dieses Tool die gleiche Codierung verwendet, um die Dateinamen so zu interpretieren, wie Sie sie beim Erstellen verwendet haben? –