Windows generiertes Zip File entpacken - Problem mit Umlaute

06/11/2007 - 23:56 von Andreas | Report spam
Hallöle!

Folgendes Problem:
Ich habe auf ner WinXP Kiste ein ZIP (mit 7zip, aber dem "normalen"
ZIP Algorithmus) erstellt.
Darin enthalten sind einige Verzeichnisse welche Umlaute enthalten.
Das ZIP habe ich dann per FTP auf eine Linux Kiste geschoben.
Auf dieser làuft Gentoo (Kernel 2.6); mein Filesystem, falls relevant,
ist ext3.

Bevor die ersten Fragen aufkommen:
Mein System làuft "utf8 konform" soweit ich das beurteilen kann; im
Prinzip habe ich das gemacht was hier steht:

http://www.gentoo.org/doc/de/utf-8.xml

Ein paar Testausgaben sehen auch ganz gut aus:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL
Selbst mein Midnight Commander làuft nach einem re-emerge mit useflags
unicode und slang wieder einwandfrei.

Erstell ich auf der Kiste (auf der ich mit Putty bin) mit mkdir ein
Verzeichnis àöü wird dieses über ls auch mit àöü ausgewiesen.

Entpacke ich das besagte ZIP erhalte ich aber statt Umlauten nur ?
oder andere kryptische Zeichen in der Ausgabe von ls.

Ich hab dann etwas mit convmv rumgespielt und versucht das zu fixen,
ohne Erfolg
Ich hab versucht von diversen Zeichensàtzen (iso8859, cp1252, latin1
usw.) nach utf8 zu konvertieren - ohne Erfolg. Eigentlich behauptete
convmv sogar dass die Dateien bereits in utf8 vorlàgen, was ich dann
aber mal mit --nosmart unterdrückt habe.

Was mache ich falsch?

Ich möchte an dieser Stelle aber keine Diskussion heraufbeschwören ob
man generell auf Umlaute in Dateinamen verzichten sollte und am besten
nur 8 Zeichen lange ASCII "kompatible" Namen vergeben sollte - die
Dateien (es sind einige) wurden nicht von mir erstellt und ich möchte
sie "einfach" nur auf ne Linux Kiste bringen :-)

Danke für jede Hilfe!

Lg,

Andreas
 

Lesen sie die antworten

#1 Helmut Waitzmann
07/11/2007 - 03:55 | Warnen spam
Andreas writes:

Hallöle!

Folgendes Problem:
Ich habe auf ner WinXP Kiste ein ZIP (mit 7zip, aber dem "normalen"
ZIP Algorithmus) erstellt.
Darin enthalten sind einige Verzeichnisse welche Umlaute enthalten.



»einige«. Ist Handarbeit noch machbar oder sind es dafür zu viele?

Mein System làuft "utf8 konform" soweit ich das beurteilen kann; im
Prinzip habe ich das gemacht was hier steht:

http://www.gentoo.org/doc/de/utf-8.xml

Ein paar Testausgaben sehen auch ganz gut aus:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL
Entpacke ich das besagte ZIP erhalte ich aber statt Umlauten nur ?
oder andere kryptische Zeichen in der Ausgabe von ls.



Gib »ls« den Parameter »-Q« (was der tut, siehe Manual-Page oder
Info-Seiten zu »ls«), dann siehst Du keine Fragezeichen, sondern die
Zeichenkodierung in Oktaldarstellung.

Besorge Dir Zeichensatztabellen der vermuteten Zeichensàtze und versuche
anhand derer zu ermitteln, unter welchem Zeichensatz die Dateinamen ins
ZIP-Archiv kamen.

Ich hab dann etwas mit convmv rumgespielt und versucht das zu fixen,
ohne Erfolg



Ohne Zitate der Fehlermeldungen kann ich da nicht weiterhelfen.

Ich hab versucht von diversen Zeichensàtzen (iso8859, cp1252, latin1
usw.) nach utf8 zu konvertieren - ohne Erfolg. Eigentlich behauptete
convmv sogar dass die Dateien bereits in utf8 vorlàgen, was ich dann
aber mal mit --nosmart unterdrückt habe.



Versuche, »convmv« den ermittelten Zeichsatz zu nennen.

Was mache ich falsch?



Du postest keine Fehlermeldungen.

Falls sich der Zeichensatz nicht ermitteln làsst, es aber für Handarbeit
nicht zu viele Dateinamen sind, versuche es so:

Versuche, mittels Wild Cards ein passendes Dateinamensmuster zu
erstellen, das alle umzubenennende Dateien (und möglichst keine weiteren)
erfasst und rufe damit ein interaktives Shell, etwa ein »bash« auf:

$ for file in *'passendes Dateinamensmuster'*
do ls -Qogd -- "$file" && bash -sim -- "$file"
done

Damit erhàltst Du für jeden umzubenennenden Dateinamen (nacheinander) ein
»bash«, in dem Du jeweils ein Umbenennungskommando eintippen kannst.

Darin tippe jeweils das folgende Kommando ein:

$ mv -- "$1" 'gewuenschter Dateiname' && exit

Damit wird ein Dateiname umbenannt und -- wenn das geklappt hat -- das
»bash« beendet. Das oben angeführte »for«-Kommando bewirkt, dass
anschließend sofort der nàchste Dateiname angezeigt und das nàchste
»bash« gestartet wird, solange, bis alle Dateinamen dran waren.

Das command-history kann Dir helfen, beim Eintippen der Kommandos
Tipparbeit zu sparen.

Ich möchte an dieser Stelle aber keine Diskussion heraufbeschwören ob
man generell auf Umlaute in Dateinamen verzichten sollte und am besten
nur 8 Zeichen lange ASCII "kompatible" Namen vergeben sollte



Das ist angesichts dessen, dass Du den Ärger hast, allein Deine
Entscheidung...

- die Dateien (es sind einige) wurden nicht von mir erstellt



... bzw. die des Erstellers der Dateien. Dann liegt es an Dir, solche
Dateinamen ggfs. in Zukunft nicht mehr zu akzeptieren, bzw. sie noch
unter Windows umzubenennen.
Wer mir E-Mail schreiben will, stelle | When writing me e-mail, please
bitte vor meine E-Mail-Adresse meinen | precede my e-mail address with
Vor- und Nachnamen, etwa so: | my full name, like
Helmut Waitzmann , (Helmut Waitzmann)

Ähnliche fragen