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
>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 <x...@example.net>, (Helmut Waitzmann) x...@example.net
Erstmal Danke für Deine Antwort!
On 7 Nov., 03:55, Helmut Waitzmann <Helmut.Waitzm...@web.de> wrote:
> Andreas <a.nau...@web.de> 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?
>
Viel zu viele.
Das ZIP File ist 37GB groß (war alleine schon ein Krampf das
auszupacken) und enthält 30000 Datein in 100erten Verzeichnissen ,-)
>
>
>
> >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.
Stimmt!
Wieder was gelernt.
Also für ä bekomme ich \302\204, für ü \302\201 und für ö \302\224.
Weiß jmd. welcher Zeichensatz das ist?
>
> 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.
Naja, es gibt keine Fehlermeldungen.
Ohne --nosmart sagt er halt "Skipped. Already utf8.", und mit --
nosmart convertiert er, macht aber aus den ? nur irgendwelche anderen
Zeichen die ich nicht will :-)
>
> >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.
Genau, den versuche ich gerade rauszufinden, bisher ohne Erfolg.
>
> >Was mache ich falsch?
>
> Du postest keine Fehlermeldungen.
Weils keine gibt :-)
>
> 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.
Wäre mühsam, aber möglich; ich hoffe jmd. weiß welcher Zeichensatz das
ist.
>
> >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 <x...@example.net>, (Helmut Waitzmann) x...@example.net- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -
Hallo,
teilweise kann evtl. das tool detox helfen:
Siehe den letzten Artikel ganz unten:
http://www.linux-user.de/ausgabe/2005/05/020-software/index.html
http://detox.sourceforge.net/
Vorher mal antesten in einem kleinen Testverzeichnis oder mit einem
Probelauf nach Lesen der Doku.
Wenn es passt, dann kann alles sehr schnell gehen.
Bernd Mayer
--
Schäuble, wenns Dir hier nicht gefällt, dann geh doch nach drüben!
Sieht aus, als hätte da ein Programm diesen 8-Bit-IBM-Zeichensatz (cp
437 oder so) als latin1 interpretiert und dann nach utf8 verwurstet.
Eventuell also doppelt zurückkonvertieren: utf8->latin1, cp437->latin1
(oder ggf. cp437->utf8).
Grüße, Hansjörg
Ich würde bei solchen Problemen immer erst mal nachsehen, wie genau die
Namen im Original-Archiv kodiert sind. Mit Perl ginge das mit folgendem
Script:
-------------------------------------------------------------------
#!/usr/bin/perl
use Archive::Zip;
use Encode;
die "Usage:$/$/$0 ZIPFILE$/" unless( scalar(@ARGV) && -e $ARGV[0] );
my $zip = Archive::Zip->new();
die "read error: $!" unless ( $zip->read( $ARGV[0] ) == AZ_OK );
foreach my $zentry ( $zip->members ) {
my $ename = $zentry->fileName();
$ename =~ s/([^\x01-\x79])/sprintf("[%s:%x]",$1,ord($1))/eg;
print "$ename$/";
}
__END__
--------------------------------------------------------------------
Das Listet alle enthaltenen Dateien auf und ergänzt alle
nicht-ASCII-Zeichen mit ihren Hexadezimalwerten.
> 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?
Sieht so aus als wäre hier cp850 mit iso-8859-1 verwechselt worden.
Zumindest hier (Vista+7zip) werden die Dateien in ersterem Format
abgelegt, Linux vermutet aber iso-Kodierung und wandelt diese natürlich
ganz hilfsbereit in UTF-8 um.
\302\204 wird bei der Rückkonvertierung nach ISO-8859-1 zu ASCII 132
(doppeltes Anführungszeichen), in cp850 entspricht das aber dem "ä".
D.h. die Umbenennung muss wohl in zwei Schritten laufen:
1. von UTF-8 nach ISO-8859-1 wandeln
2. von cp850 nach UTF-8 wandeln
-Christian
Mein Held!
Genau das wars!
Verstehen tu ichs nicht, aber vieeeeeeeeeeeeeeeeeeeeelen Dank!