Heim > Java > JavaBase > Hauptteil

Einführung in die Ursachen und Lösungen für verstümmelte Zeichen durch die Java-Zip-Komprimierung

Freigeben: 2019-12-02 13:20:03
Original
3385 Leute haben es durchsucht

Einführung in die Ursachen und Lösungen für verstümmelte Zeichen durch die Java-Zip-Komprimierung

Ursachen und Lösungen für verstümmelte Java-ZIP-Komprimierung: (Empfohlen: Java-Video-Tutorial)

Laufzeitumgebung

Jdk 1.5 , Win 7 Chinesische Version

JDK1.5 verfügt über eine API für die Zip-Komprimierung, die sich im Paket java.util.zip befindet. Unter normalen Umständen verwenden Sie die mit dem JDK gelieferte API, um das Verzeichnis (die Datei) in ein ZIP-Paket zu komprimieren. Die Schritte sind wie folgt:

ZipOutputStream out = new ZipOutputStream(new FileOutputStream(file));
Out.putNextEntry(new ZipEntry(entryName));
//If entry is directory
//above codes are enough
//else if entry is file
//then the codes below is needed
FileInputStream in = new FileInputStream(infile);
byte[] bs = newbyte[1024];
int b = 0;
while((b = in.read(bs)) != -1) {
zos.write(bs, 0, b);
}
in.close();
Nach dem Login kopieren

Wenn der zu packende Verzeichnisname oder Dateiname chinesische Zeichen enthält , die Namen dieser Verzeichnisse oder Dateien Es werden verstümmelte Zeichen angezeigt. Der Grund dafür ist, dass in der mit dem JDK gelieferten API beim Schreiben von ZipEntry die Standardcodierung UTF8 ist (es scheint, dass es nur diese gibt, und es gibt keine). Es wird gesagt, dass sich Java7 verbessert hat und dass die chinesische Version des Systems bei der Verarbeitung von Zip-Dateien unterschiedliche Codierungs- und Decodierungsprozesse verwendet, was dazu führt, dass die gepackten Dateien in der chinesischen Version verstümmelt werden von win7.

Die Lösung, die übernommen werden kann, besteht darin, eine API eines Drittanbieters zu verwenden, um die Zip-Komprimierung zu implementieren und das Problem der verstümmelten chinesischen Zeichen zu lösen. Das Folgende ist die Implementierung der Zip-Komprimierung mit Apaches Compress. Das erforderliche JAR-Paket ist commons-compress-1.2.jar

ArchiveOutputStream os = new ArchiveStreamFactory()
              .createArchiveOutputStream(ArchiveStreamFactory.ZIP, out);
if(os instanceof ZipArchiveOutputStream) {
((ZipArchiveOutputStream) os).setEncoding("GBK");
}
//...some code omitted
os.putArchiveEntry(new ZipArchiveEntry(path+"/"+file.getName()));
IOUtils.copy(new FileInputStream(file), os);
os.closeArchiveEntry();
Nach dem Login kopieren

Für weitere Java-Kenntnisse beachten Sie bitte das Java Basic Tutorial Spalte.

Das obige ist der detaillierte Inhalt vonEinführung in die Ursachen und Lösungen für verstümmelte Zeichen durch die Java-Zip-Komprimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!