Ich habe ZIP-Datei (en), die Dateien enthält, deren Dateinamen in einer bestimmten Codierung vorliegen. Angenommen, ich kenne die Kodierung dieser Dateinamen, weiß aber noch nicht, wie ich sie richtig dekomprimieren soll.
Es folgt ein Beispieldatei enthält es eine Datei "【SSK字幕组】 The Vampire Diaries吸血鬼日记S06E12.ass"
Ich weiß, dass die verwendete Kodierung GB18030 ist (Chinesisch)
Die Frage ist, wie man diese Datei in FreeBSD mit unzip oder einem anderen CLI-Dienstprogramm entpackt, um den richtigen kodierten Dateinamen zu erhalten. Ich habe alles versucht, was ich konnte, aber das Ergebnis war nie gut. Bitte helfen Sie.
Ich habe es mit OSX versucht:
MBP1:test 2ge$ bsdtar xf gb18030.zip
MBP1:test 2ge$ ls
%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12/ gb18030.zip
MBP1:test 2ge$ cd %A1%BESSK%D7%D6Ļ%D7顿The\ Vampire\ Diaries\ %CE%FCѪ%B9%ED%C8ռ%C7S06E12/
MBP1:%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12 2ge$ ls
%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12.ass*
MBP1:%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12 2ge$ find . | iconv -f gb18030 -t utf-8
.
./%A1%BESSK%D7%D6L抬%D7椤縏he Vampire Diaries %CE%FC血%B9%ED%C8占%C7S06E12.ass
MBP1:%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12 2ge$ convmv -r -f gb18030 -t utf-8 --notest .
Skipping, already UTF-8: ./%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12.ass
Ready!
Ich habe es mit unzip ähnlich versucht, aber ich bekomme ein ähnliches Problem.
Danke, probiere jetzt FREE BSD aus, bei dem ich eine Verbindung über SSH von OSX (Terminal) herstelle:
# locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=C
Das erste, was ich möchte, ist, chinesische Namen zu zeigen. ich habe mich verändert
setenv LC_ALL zh_CN.GB18030
setenv LANG zh_CN.GB18030
Dann habe ich die Datei heruntergeladen und versuche "ls" um richtige Charaktere zu sehen, aber kein Glück. Ich denke, ich muss zuerst das chinesische Gebietsschema lösen, um zu überprüfen, ob ich das richtige Ergebnis erhalte. Eigentlich kann ich es vergleichen. Kannst du mir bitte auch dabei helfen?
unzip
hat diese Option in Mac OS X nicht und erstellt immer prozentual codierte Dateinamen. @ Javacomsunar
Vorschlag wirkte wie ein Zauber.unzip
sage esUnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler
und biete solche Optionen nicht an.unzip
in Debian 9 ist genau die gleiche Version und hat keine solchen Optionen. Wahrscheinlich Ubuntu-spezifisch?Bei den meisten POSIX-Dateisystemen besteht der Dateiname nur aus einer Reihe von Bytes, und es liegt im Ermessen des Benutzers, einen Sinn daraus zu ziehen. Sie können dies zu Ihrem Vorteil nutzen.
Extrahieren Sie zuerst das Archiv mit
bsdtar
, da dasunzip
Tool die Dateinamen zu entstellen scheint, während bsdtar sie roh extrahiert. (Ich teste dies unter Linux. Ich denke, FreeBSD nennt es einfachtar
.)Stellen Sie sicher, dass Tools wie
iconv
die Namen erfolgreich dekodieren können:(Beachten Sie, dass dies nur die
find
Ausgabe betrifft , nicht die Dateien selbst.)Verwenden Sie schließlich
convmv
, um die Dateinamen in UTF-8 umzuwandeln:(Hinweis: Ich musste Encode :: HanExtra von CPAN für die GB18030-Unterstützung installieren und manuell
use Encode::HanExtra;
zu / usr / bin / convmv hinzufügen, obwohl dies erforderlich warFalls
convmv
nicht verfügbar, schreiben Sie es:(Zumindest unter Linux hat dies den Vorteil, dass
iconv
es fast immer verfügbar ist und immer gb18030 unterstützt.)quelle
Methode 1 : verwenden Sie Unar-Dienstprogramm
Methode 2 : Verwenden Sie ein Python-Skript zum Entpacken der Datei (siehe https://gist.github.com/usunyu/dfc6e56af6e6caab8018bef4c3f3d452#file-gbk-unzip-py )
Das Beispiel gb18030.zip extrahiert die folgende Datei
quelle
unar
Methode ist zumindest unter Mac OS X die stressfreieste.Unter OS X können Sie eine GUI-Anwendung namens The Unarchiver verwenden . Es kann mit Mac App Store oder Homebrew Cask installiert werden :
Wenn Sie eine ZIP-Datei damit öffnen, können Sie die entsprechende Codierung mithilfe der Vorschau eines Dateinamens aus dem Archiv auswählen.
quelle
7z unterstützt Zeichensatz-ID mit einem Schalter
-scs
, zB:Wobei 903 中文 中文 Zeichensatz ist. Eine längere Liste der Zeichensatz-IDs finden Sie hier .
quelle
7z
-scs
switch wählt nur die Kodierung der@
-definierten Dateiliste.Verwenden Sie 7z, um die Datei zu extrahieren
Danach konvertieren Sie die Kodierung dieser Dateinamen selbst:
Dies funktioniert für mich. From_encoding in meinem Fall ist tis-620 (das ist eine thailändische Codierung), Sie müssen eine geeignete Codierung für Ihre Sprache finden. Ein beliebtes Programm löst normalerweise das Problem, aber wenn der Dateiname immer noch nicht lesbar ist, können Sie versuchen, die Codierung von "from_encoding" auf "windows-1252" oder "shift-jis" (Japanisch) zu ändern.
Dies ist für mich eine sehr einfache Methode zum Lösen.
quelle
Ich habe gerade 7zip verwendet und es ist mir gelungen, die richtige Kodierung zu finden.
(etwas, das Standardreißverschluss nicht konnte)
aber verwendet es unter Windows, mit dem GUI-Tool. Vielleicht funktioniert die Kommandozeile 7z auch für Sie.
quelle