Verwenden Sie Java zum Packen von Dateien, um komprimierte Dateien zu generieren. Es gibt zwei Stellen, an denen verstümmelte Zeichen angezeigt werden (empfohlen: Java-Grundlagen-Tutorial)
1. Inhalt chinesischer verstümmelter Zeichen. Viele Leute im Internet haben zwei Arten von Lösungen für dieses Problem angegeben: Ändern Sie den Quellcode von Sun und verwenden Sie die Open-Source-Klassenbibliotheken org.apache.tools.zip.ZipOutputStream und org.apache. tools.zip.ZipEntry, dies Es gibt zwei Klassen in ant.jar, die heruntergeladen und verwendet werden können. Es besteht kein Zweifel, dass es bequemer ist, Letzteres zu wählen.
2. Das Problem der verstümmelten chinesischen Zeichen in komprimierten Dateikommentaren: zos.setComment("Chinese test"); Ich habe dieses Problem lange Zeit online überprüft und niemanden gesehen, der es erklärt hat einen Weg finden, es selbst zu lösen.
Die vom Projekt auf meinem eigenen Computer erstellte Testklasse hatte keine Probleme, aber als ich sie im Projekt des Unternehmens verwendete, erschienen immer wieder verstümmelte Zeichen. Durch die Verwendung der Methode zum Festlegen der Kodierung (zos.setEncoding() gbk");), ich endlich Das Problem wurde entdeckt. Die Codierungsmethode des Testprojekts ist gbk, und die Standardcodierung des Unternehmensprojekts ist utf-8, sodass es beim Testprojekt kein Problem gibt, aber es gibt ein Problem mit dem Projekt des Unternehmens.
org.apache.tools.zip.ZipOutputStream verwendet standardmäßig die Kodierungsmethode des Projekts. Theoretisch unterstützt utf-8 auch Chinesisch. Wenn Sie nicht herausfinden können, warum es immer noch verstümmelt ist, ändern Sie es einfach es zu gbk durch die setEncoding-Methode lösen.
Fügen Sie einen Code zum Komprimieren der Datei hinzu
package com.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; public class CompressEncodingTest { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { File f = new File("中文测试.txt"); ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream( new FileOutputStream("zipTest.zip"), 1024)); zos.putNextEntry(new ZipEntry("中国人.txt")); DataInputStream dis = new DataInputStream(new BufferedInputStream( new FileInputStream(f))); zos.putNextEntry(new ZipEntry(f.getName())); int c; while ((c = dis.read()) != -1) { zos.write(c); } zos.setEncoding("gbk"); zos.setComment("中文测试"); zos.closeEntry(); zos.close(); } }
Das obige ist der detaillierte Inhalt vonLösung zum Komprimieren verstümmelter Zeichen in Java (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!