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?
unzip -v
, ob es mit Unicode-Unterstützung kompiliert wurde (meins sagtUNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)
UNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)
Antworten:
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. ;-)
quelle
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:
Erträge:
quelle