Ich habe viele zip-Dateien, in denen es Kodierungsfehler für die deutschen Umlaute (äüöÄÜÖß) gibt. Sie erscheinen sowohl in der Datei filename.zip als auch in den enthaltenen Verzeichnissen und Dateien wie folgt:
- Fünf = Fu╠ênf
- Räuber = Ra╠êuber
- Überfall
und so weiter. Normalerweise verwende ich Linux, aber aufgrund dieser Probleme habe ich auch eine Windows7-VM ausprobiert, aber dies führt zu dem gleichen Kodierungsfehler. Unter Linux habe ich mit convmv und detox rumgespielt, aber ohne Erfolg.
Wenn ich benutze
- convmv -f iso-8859-1 -t utf8 --replace --notest -r *
Ich bekomme "Skipping, schon UTF-8".
Irgendwelche Gedanken dazu?
find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest
Dateien ab dem aktuellen Verzeichnis und führt convmv für jede Datei separat aus. Dateiname wird als nullterminierte Liste angegeben.Antworten:
Der Grund, warum die Warnung "Bereits UTF-8" angezeigt wird, ist, dass diese Zeichenfolgen tatsächlich bereits in UTF-8 enthalten sind. Das "ü" -Zeichen wurde im OSX-Stil als "u" gefolgt von den zwei Bytes "\ xCC" und "\ x88" codiert. Diese beiden Bytes bilden zusammen die UTF-8-Darstellung von \ u0308, der kombinierenden Diaeresis.
Wenn Sie sich die Codepage 437 ansehen, die hier aufgelistet ist , sehen Sie das Zeichen \ xCC als "╠" und das Zeichen \ x88 als "ê".
Was auch immer Sie zum Anzeigen dieser Zeichenfolgen verwenden, interpretiert sie nicht als UTF-8, sondern als CP437.
Ein schneller Beweis, wenn Sie Ruby lesen, der in meinem UTF-8-Terminal wie erwartet angezeigt wird:
quelle
Ich vermute, das Dateisystem, das Sie versuchen, die Dateien zu dekomprimieren oder zu manipulieren. FAT32 wird deine Umlaute nicht mögen. Versuchen Sie, diese Dateien vom Flash-Laufwerk zu kopieren (oder was haben Sie), und dekomprimieren Sie dann die ZIP-Datei, um zu sehen, welche Art von Zeichen die Dateinamen erzeugen.
Sowohl NTFS (Windows) als auch Ext4 (Mint) sollten kein Problem mit der Namenscodierung haben.
Die Namenscodierung der Zip-Dateien selbst auf dem FAT32-System wird sich wahrscheinlich nicht ändern oder korrigieren, wenn Sie sie in ein geeignetes unterstützendes Dateisystem kopieren. Die dekomprimierten Unterverzeichnisse sollten jedoch in Ordnung sein.
quelle
Beachten Sie zunächst, dass die Zeichenkodierung ein eigener Teil der Hölle ist. In der Windows-Welt gibt es immer noch einen üblen Dualismus zwischen UTF-8 und M $, der lange Zeit dumm war und auf ISO-8859 bestand (raten Sie mal, wer darauf gekommen ist). Wie oben erwähnt, hat es mit ziemlicher Sicherheit etwas mit dem Dateisystem zu tun. Meine Lösung ist keine technische, sondern eine, die seit vielen Jahren für mich funktioniert:
Mein persönlicher Rat für Dateinamen ist immer derselbe: Bleibe bei den alphanumerischen Zeichen plus Bindestrich (-) und Unterstrich (_). Schreibe Umlaute als ae, ue und oe. Verwenden Sie keine Leerzeichen oder andere Sonderzeichen. Anfangs ist es ein bisschen unbequem, aber es erspart Ihnen viel Schmerz an unerwarteten Orten.
Als Randnotiz: Ja, das ist eine Art übler "Hack", aber wenn Sie plattformübergreifend arbeiten, müssen Sie häufig auf den letzten gemeinsamen Nenner zurückgreifen. Man würde davon ausgehen, dass etwas Grundlegendes wie die Zeichencodierung ein harter Standard ist, aber es stellt sich heraus, dass Standards schwer zu bekommen sind. Diese XKCD fasst es ganz gut zusammen
quelle