Skip to content

Wie kann ich ein ZIP-Archiv mit Dateien mit hebräischen Namen korrekt dekomprimieren?

Lösung:

Es hört sich so an, als wären die Dateinamen in einer der proprietären Codepages von Windows (CP862, 1255 usw.) codiert.

  • Gibt es ein anderes Dekomprimierungsprogramm, das meine Dateien mit den richtigen Namen dekomprimiert? Mir ist kein Zip-Dienstprogramm bekannt, das diese Codepages nativ unterstützt. 7z hat ein gewisses Verständnis von Codierungen, aber ich glaube, es muss eine Codierung sein, die Ihr System allgemein kennt (Sie wählen sie aus, indem Sie die LANG Umgebungsvariable) und Windows-Codepages gehören wahrscheinlich nicht dazu.

    unzip -UU sollte von der Befehlszeile aus funktionieren, um Dateien mit den richtigen Bytes im Namen zu erstellen (durch Deaktivieren der gesamten Unicode-Unterstützung). Dies ist wahrscheinlich der Effekt, den Sie bereits mit dem GNOME-Tool erzielt haben. Die Kodierung wird so oder so nicht richtig sein, aber wir können das unten beheben.

  • Stimmt etwas mit der Komprimierung der Datei nicht oder ist es nur eine Inkompatibilität der ZIP-Implementierungen? Oder sogar Fehlfunktion/Bug der Linux-ZIP-Dienstprogramme? Die Datei, die Sie erhalten haben, wurde nicht portabel erstellt. Das ist nicht unbedingt falsch für eine interne Verwendung, bei der die Kodierung fest und im Voraus bekannt ist, obwohl die Formatspezifikation besagt, dass die Namen entweder UTF-8 oder cp437 sein sollen und Ihre keine. Selbst zwischen Windows-Rechnern funktioniert die Verwendung verschiedener Codepages nicht gut, aber Nicht-Windows-Rechner haben von Anfang an kein Konzept für diese Codepages. Die meisten Tools codieren ihre Dateinamen in UTF-8 (was immer noch nicht immer ausreicht, um Probleme zu vermeiden).

  • Was kann ich tun, um die richtigen Dateinamen zu erhalten, nachdem ich mit den verstümmelten dekomprimiert habe? Wenn Sie die Kodierung der Dateinamen erkennen können, können Sie die Bytes in den vorhandenen Namen in UTF-8 umwandeln und die vorhandenen Dateien auf den richtigen Namen verschieben. Die convmv Tool fasst diesen Prozess im Wesentlichen in einen einzigen Befehl zusammen: convmv -f cp862 -t utf8 -r . werde versuchen, alles drinnen umzuwandeln . von cp862 bis UTF-8.

    Alternativ können Sie iconv und find um alles auf die richtigen Namen zu verschieben. Etwas wie:

    find -mindepth 1 -exec sh -c 'mv "$1" "$(echo "$1" | iconv -f cp862 -t utf8)"' sh {} ;
    

    findet alle Dateien unterhalb des aktuellen Verzeichnisses und versucht, die Namen in UTF-8 zu konvertieren.

    In beiden Fällen können Sie mit verschiedenen Codierungen experimentieren und versuchen, eine sinnvolle zu finden.


Nachdem Sie die Kodierung für Sie korrigiert haben, ist es möglich, dass Sie am anderen Ende das gleiche Problem haben, wenn Sie diese Dateien in die andere Richtung zurücksenden möchten. In diesem Fall können Sie den Vorgang rückgängig machen, bevor Sie die Dateien mit komprimieren -UU, da es auf der Windows-Seite wahrscheinlich sehr schwer zu beheben ist.

Ich hatte Erfolg mit dem Befehl 7z x <source.zip>.

Ausführung:

p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,[...])

Potenziell relevantes Umfeld:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_CTYPE=UTF-8

Es war in der Lage, alle Dateien mit 8-Bit-Zeichen in ihren Dateinamen zu dekomprimieren, wobei einige dieser Zeichen übersprungen und einige verstümmelt wurden.

Ich hatte gerade das gleiche Problem und es stellte sich heraus, dass meine Version von unzip die in Ubuntu-Repositorys verfügbar ist (UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.) kann die automatische Dekodierung von Dateinamen handhaben, wenn Sie die -a Schalter.

unzip -a stupid.zip
Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.