openSUSE entpackt das Unicode-Problem

0

Auf einem Linux-Computer (openSUSE) versuche ich, eine Tomcat 8-Anwendung (War-Datei) bereitzustellen, die Dateien mit Namen mit Unicode-Zeichen enthält.

In der Kriegsakte sieht der Name so aus:

бжк-природний-1496336830201.xml

aber nach dem Deployment sieht die Datei so aus:

???-?????????????-1496336830201.xml

Wenn ich Dateien manuell entpacke, sind auch die Namen beschädigt.

Wie können Sie unzip und Tomcat anweisen, die Dateinamen ordnungsgemäß bereitzustellen?

Übrigens - ich habe diese Kriegsdatei auf meinen Windows-Rechner heruntergeladen und dort entpackt - alles sieht gut aus.

AKTUALISIERT

Dies ist eine Beispiel-Kriegsdatei mit einem Unicode-Dateinamen in der Datei : war

Was stimmt nicht mit dem Dateinamen der Datei in diesem Krieg?

alexanoid
quelle
Normalerweise unterstützen Unix-Dateisysteme Unicode. Das in Ihrem Terminal verwendete Gebietsschema (oder die Schriftart) wird möglicherweise nicht verwendet. Ansonsten prüfe unzip -v, ob es mit Unicode-Unterstützung kompiliert wurde (meins sagtUNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)
xenoid
Ja, es hatUNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)
alexanoid
Überprüfen Sie dann das Gebietsschema und die Terminalschriftart. Haben Sie versucht, das Verzeichnis mit einem grafischen Dateibrowser zu durchsuchen (filezilla, falls remote und über FTP oder SSH erreichbar)? Möglicherweise werden die Dateinamen korrekt angezeigt.
Xenoid
Anscheinend liegt das Problem bei den Dateinamen selbst in der Kriegsdatei, da ich im System nicht-lateinische Zeichen erstellen und diese anzeigen kann. Wie überprüfe ich die Dateinamencodierung unter Linux?
Alexanoid
1
Ein kurzes Python-Skript, in dem alles erklärt wird: hier
xenoid

Antworten:

1

Ich denke du brauchst das Paket unzip-rcc . Ich habe auf meinem Computer getestet, dass ich Erfolg haben werde, wenn ich unzip-rcc verwende. Wenn ich das Original-Entpacken verwende, schlägt dies fehl.

Ich bin ein chinesischer Benutzer, der auch Unicode benötigt. Jedes Mal, wenn ich openSUSE installiere, wird dieses Paket mit hoher Priorität installiert. ;-)

Peijun Zhu
quelle
Danke, unzip funktioniert einwandfrei, aber Tomcat stellt die Dateien immer noch mit einem Problem
bereit
0

Die WAR-Datei enthält tatsächlich den in UTF-8 codierten Dateinamen. Das Flag, das dies sagt (Bit # 11 der Allzweck-Flags), ist jedoch nicht gesetzt, aber dies ist möglich, da der JAR-Befehl eine andere Variante der Namenscodierung verwendet (dies ist tatsächlich der Fall mit dem JAR-Befehl, den ich habe).

Die eigentliche Antwort lautet also: Verwenden Sie zum Entpacken keinen regulären ZIP-Befehl, sondern den JAR-Befehl selbst:

jar -xvf api.war

Erträge:

created: WEB-INF/
created: WEB-INF/classes/
created: WEB-INF/classes/sample-data/
created: WEB-INF/classes/sample-data/decisions/
created: WEB-INF/classes/sample-data/decisions/novobudivy_refs/
inflated: WEB-INF/classes/sample-data/decisions/novobudivy_refs/13я-стац_я-великого-фонтану-1496338558663.xml
Magnet
quelle