Discussion:
Umlaute in Dateinamen
Nicolas Rüegg
2003-12-08 16:28:32 UTC
Permalink
Hallo zusammen

Ich habe hier ein ziemlich ärgerliches Problem mit Umlauten in
Dateinamen. Wenn ich versuche eine Datei namens "täst.txt" mittels
touch anzulegen, so funktioniert dies zwar ohne Probleme, aber wenn
ich mit ls nun den Verzeichnisinhalt auflisten will, so wird die
Datei "täst.txt" als "t?st.txt" angezeigt. Mit ls -lb wird sie als
"t\344st.txt" angezeigt.
Wie bringe ich es hin, dass der Dateiname mit Sonderzeichen auch
mit ls korrekt angezeigt wird?

Ich verwende Suse Professional 8.2. Unter Suse Professional 7.2
hatte ich dieses Problem nicht...

P.S.: Ich weiss, dass Dateinamen mit Sonderzeichen nicht gerade
gern gesehen sind (ich bin es auch nicht der diese Dateien so
bennen möchte...)

Grüsse und danke schon mal jetzt,

Nicolas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Daniel Lord
2003-12-08 17:03:53 UTC
Permalink
Hallo Nicolas,
Post by Nicolas Rüegg
Wie bringe ich es hin, dass der Dateiname mit Sonderzeichen auch
mit ls korrekt angezeigt wird?
hmm mal ein Schuss ins Blaue :) was zeigt dir folgender Befehl?

echo $LANG

kommt dabei etwas wie ***@euro dabei heraus (@euro optional)

wenn nicht export LANG="***@euro" in die ~/.bashrc schreiben
bzw. eingeben und ausprobieren ob es dann funktioniert.

Greetings Daniel
--
Sie brauchen einen Computer nicht einzuschalten um festzustellen,
ob Windows installiert ist. Sehen Sie einfach nach, ob die
Aufschrift auf der Reset-Taste noch lesbar ist.
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Nicolas Rüegg
2003-12-08 22:17:43 UTC
Permalink
Post by Daniel Lord
Hallo Nicolas,
Post by Nicolas Rüegg
Wie bringe ich es hin, dass der Dateiname mit Sonderzeichen
auch mit ls korrekt angezeigt wird?
hmm mal ein Schuss ins Blaue :) was zeigt dir folgender Befehl?
echo $LANG
$ locale

LANG=en_US
LC_CTYPE=en_US
[...]

Ändere ich das ganze mit export LC_ALL=***@euro so bringt
das leider nicht den gewünschten Effekt...

Grüsse,

Nicolas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
David Haller
2003-12-09 06:09:52 UTC
Permalink
Hallo,
Post by Nicolas Rüegg
Post by Daniel Lord
Hallo Nicolas,
Post by Nicolas Rüegg
Wie bringe ich es hin, dass der Dateiname mit Sonderzeichen
auch mit ls korrekt angezeigt wird?
hmm mal ein Schuss ins Blaue :) was zeigt dir folgender Befehl?
echo $LANG
$ locale
LANG=en_US
LC_CTYPE=en_US
[...]
Das expandiert zu us-ascii (7bit) und das kennt keine Umlaute.

Abhilfe: gibt einen Zeichensatz an, z.B. latin9:

export LANG="en_US.ISO-8859-15"

bzw. definiere LANG in Yast oder /etc/sysconfig/*

-dnh
--
When I woke up this morning, the cat was barfing on me. Things have
gone downhill since then. -- Michel Buijsman
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Nicolas Rüegg
2003-12-09 23:15:18 UTC
Permalink
Am Dienstag, 9. Dezember 2003 07.09 schrieb David Haller:
[ ... Problem mit Umlauten in Dateinamen ... ]
Post by David Haller
Post by Nicolas Rüegg
Post by Daniel Lord
echo $LANG
$ locale
LANG=en_US
LC_CTYPE=en_US
[...]
Das expandiert zu us-ascii (7bit) und das kennt keine Umlaute.
export LANG="en_US.ISO-8859-15"
Hab ich gemacht, brachte aber auch nichts. Ich habe nun dank der
Manpage von ls herausgefunden, dass die Umlaute etc. mit der Option
--show-control-chars auch angezeigt werden. Unter Suse 7.2
funktionierte das mit den Umlauten noch per Standard. Muss ich doch
noch irgendwas ändern mit diesen Variablen (LANG etc.), damit die
Umlaute mit ls auch bei Suse 8.2 wieder per Standard funktionieren?

Grüsse,

Nicolas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
David Haller
2003-12-10 08:02:08 UTC
Permalink
Hallo,
Post by Nicolas Rüegg
[ ... Problem mit Umlauten in Dateinamen ... ]
Post by David Haller
export LANG="en_US.ISO-8859-15"
Hab ich gemacht, brachte aber auch nichts. Ich habe nun dank der
Manpage von ls herausgefunden, dass die Umlaute etc. mit der Option
--show-control-chars auch angezeigt werden. Unter Suse 7.2
funktionierte das mit den Umlauten noch per Standard. Muss ich doch
noch irgendwas ändern mit diesen Variablen (LANG etc.), damit die
Umlaute mit ls auch bei Suse 8.2 wieder per Standard funktionieren?
grep LS_OPTIONS /etc/bash.bashrc

Sollte aber auch so gehen, denn da findet sich per Default:

if test "$UID" = 0 ; then
LS_OPTIONS="-a -N $LS_OPTIONS -T 0"
else
LS_OPTIONS="-N $LS_OPTIONS -T 0"
fi

Und da jew. das '-N' dabei ist...

-dnh
--
Post by Nicolas Rüegg
Was die Amis viel dringender brauchen, sind deutsche Waschmaschinen.
Miele koennte da leicht den ganzen Markt aufrollen.
...und was soll dann aus den beliebten Waschmaschinen/Trocknerrennen
werden, wenn die Mielemaschinen sich partout nicht vom Fleck rühren ?
[Kristian Koehntopp und Jochen Arndt in dasr]
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Nicolas Rüegg
2003-12-10 18:14:01 UTC
Permalink
Post by David Haller
Post by Nicolas Rüegg
Ich habe nun dank der
Manpage von ls herausgefunden, dass die Umlaute etc. mit der
Option --show-control-chars auch angezeigt werden. Unter Suse
7.2 funktionierte das mit den Umlauten noch per Standard. Muss
ich doch noch irgendwas ändern mit diesen Variablen (LANG
etc.), damit die Umlaute mit ls auch bei Suse 8.2 wieder per
Standard funktionieren?
grep LS_OPTIONS /etc/bash.bashrc
if test "$UID" = 0 ; then
LS_OPTIONS="-a -N $LS_OPTIONS -T 0"
else
LS_OPTIONS="-N $LS_OPTIONS -T 0"
fi
Und da jew. das '-N' dabei ist...
Hhm, das "-N" ist bei mir auch dabei. Es funktioniert jedoch
trotzdem nicht. Die Variable LS_OPTIONS ist bei Suse 7.2 und Suse
8.2 gleich. Die Ausgabe stimmt jedoch nicht überein. Bei Suse 7.2
werden Umlaute angezeigt, bei Suse 8.2 nicht. Könnte es sonst noch
an was liegen? Wie gesagt, die LC_*-Variablen habe ich alle schon
mal geändert, was jedoch auch nichts gebracht hatte :-(

Grüsse,

Nicolas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
David Haller
2003-12-10 20:06:31 UTC
Permalink
Hallo,
Post by Nicolas Rüegg
Post by David Haller
if test "$UID" = 0 ; then
LS_OPTIONS="-a -N $LS_OPTIONS -T 0"
else
LS_OPTIONS="-N $LS_OPTIONS -T 0"
fi
Und da jew. das '-N' dabei ist...
Hhm, das "-N" ist bei mir auch dabei. Es funktioniert jedoch
trotzdem nicht. Die Variable LS_OPTIONS ist bei Suse 7.2 und Suse
8.2 gleich. Die Ausgabe stimmt jedoch nicht überein. Bei Suse 7.2
werden Umlaute angezeigt, bei Suse 8.2 nicht. Könnte es sonst noch
an was liegen? Wie gesagt, die LC_*-Variablen habe ich alle schon
mal geändert, was jedoch auch nichts gebracht hatte :-(
Was sagt ein 'type -a ls'? Das sollte mindestens folgendes ergeben:

====
ls is aliased to `ls $LS_OPTIONS'
ls is /bin/ls
====

Apropos: Was passiert, wenn du per Hand:

$ touch '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ /bin/ls -N '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ /bin/ls -N -b '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ LANG=C /bin/ls -N '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ LANG=C /bin/ls -N -b '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ rm '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'

eingibst? Das sollte (bei "tauglichen" Einstellungen von LANG)
folgende Ausgaben ergeben:

==== Bsp: LANG="en_US.ISO_8859-15" ====
/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen
/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen
/tmp/?????_??t_S????r????hen
/tmp/\320\300\332\200\313_\221\313t_S\322\321\320\302r\230\313\201\303hen
====

Wichtig bei $LANG ist v.a., dass der Zeichensatz bekannt ist. Was hast
du denn fuer eine SuSE? Und was spuckt 'locale' aus? Kennt deine glibc
das was du als LANG definiert hast? '***@euro' ist (AFAIR) nur ein
Alias auf 'de_DE.ISO_8859-15'...

Prinzipiell geht es jedenfalls. Wenn es bei mir mit ner SuSE-6.2 /
glibc-2.1.3 klappt, dann wird das bei dir auch funktionieren koennen.

-dnh

PS: Die Datei in /tmp/ kannst du auch anders nennen, nur ein paar
Umlaute sollten dabei sein ;)
--
Post by Nicolas Rüegg
Ich geh' jetzt erstmal Gummienten beim Wettschwimmen zugucken...
Du Gluecklicher. Ich darf morgen "echten" eNTen beim Umfallen zuschaun.
-- Jochen Erwied und Thomas Ogrisegg
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Karl Sinn
2003-12-10 23:36:23 UTC
Permalink
Hallo,

Ich habe mit den Umlauten ja auch so meine Probleme.

Wie kann ich herausfinden welchen Zeichensatz auf meinen verschiedenen
Laufwerken (reiserfs, vfat, CD, DVD) benutzt wird?

Gruss
Karl


SuSE 8.2 pro
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
David Haller
2003-12-11 12:19:31 UTC
Permalink
Hallo,
Post by Karl Sinn
Wie kann ich herausfinden welchen Zeichensatz auf meinen verschiedenen
Laufwerken (reiserfs, vfat, CD, DVD) benutzt wird?
Weiss ich auch nicht...

Ext2/3 verwendet jedenfalls kein besonderes, die Dateinamen werden
"einfach so" in die Verzeichniseintraege geschrieben. Bei reiserfs
duerfte es aehnlich sein.

Bei vfat muss man den Zeichensatz angeben, der unter Windows verwendet
wird, bei einem deutschen Windows ist das i.d.R. cp850 fuer die 8.3
Dateinamen, und unicode 16 kodiert fuer die langen. Mountoptionen sind also
codepage=850 (oder =437 fuer den default us-ascii) fuer die kurzen
Namen. Fuer die langen Namen muss man angeben, in welches lokale Format
die unicode-Zeichen uebersetzt werden, also iocharset=iso8859-15 oder
auch =iso8859-1.

iso9660 verwendet AFAIK nur us-ascii und 8.3. Joliet verwendet unicode
16, da gilt das gleiche wie bei vfat mit iocharset. Bei RockRidge gilt
AFAIK das zu ext2 gesagte.
UDF verwendet intern "OSTA compressed Unicode", IO erfolgt offenbar
via UTF-8, es ist also AFAIK nix zu beachten.

-dnh
--
Calvin: People think it must be fun to be a super genius, but they don't
realize how hard it is to put up with all the idiots in the world.
Hobbes: Isn't your pants' zipper supposed to be in the front?
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Bernhard Walle
2003-12-11 12:45:09 UTC
Permalink
Post by David Haller
Post by Karl Sinn
Wie kann ich herausfinden welchen Zeichensatz auf meinen verschiedenen
Laufwerken (reiserfs, vfat, CD, DVD) benutzt wird?
UDF verwendet intern "OSTA compressed Unicode", IO erfolgt offenbar
via UTF-8, es ist also AFAIK nix zu beachten.
funktioniert hier aber nicht. Ich habe hier eine DVD-RAM als UDF
formatiert, ein "täst" auf einem lokalen Dateisystem ergibt kopiert

-rw-r--r-- 1 bwalle users 0 2003-12-11 13:42 ç??ç??ï??

Meine Lösung war einfach die paar Dateien mit Umlauten umzubenennen
(einmalige Angelegenheit da für Backupzwecke). Weiß jemand zufällig, wie
man es "richtig" machen könnte?


Gruß,
Bernhard
--
_________ http://www.bwalle.de _________________________________________________
Es wird Wagen geben, die von keinem Tier gezogen werden und mit unglaublicher
Gewalt daherfahren.
-- Leonardo da Vinci
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Nicolas Rüegg
2003-12-14 18:42:17 UTC
Permalink
Am Mittwoch, 10. Dezember 2003 21.06 schrieben Sie:
[... Umlaute werden nur bei ls nur mit der Option
--show-character-chars angezeigt...]
Post by David Haller
Was sagt ein 'type -a ls'? Das sollte mindestens folgendes
====
ls is aliased to `ls $LS_OPTIONS'
ls is /bin/ls
Ja, bekomm ich auch...
Post by David Haller
$ touch '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ /bin/ls -N '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ /bin/ls -N -b '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ LANG=C /bin/ls -N '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ LANG=C /bin/ls -N -b '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
$ rm '/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen'
eingibst? Das sollte (bei "tauglichen" Einstellungen von LANG)
==== Bsp: LANG="en_US.ISO_8859-15" ====
/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen
/tmp/Ðäþ?ï_µït_Söñðær?ë¥çhen
/tmp/?????_??t_S????r????hen
/tmp/\320\300\332\200\313_\221\313t_S\322\321\320\302r\230\313\20
1\303hen ====
Wichtig bei $LANG ist v.a., dass der Zeichensatz bekannt ist. Was
hast du denn fuer eine SuSE? Und was spuckt 'locale' aus? Kennt
(AFAIR) nur ein Alias auf 'de_DE.ISO_8859-15'...
Hhm... wenn ich locale -a eingebe, so erscheint bei mir nur gerade
"C" und "POSIX".
Bei locale -m kommt folgende Meldung:
"local: cannot read character map directory
'/usr/share/i18n/charmaps': No such file or directory"

Da scheint tatsächlich etwas nicht zu stimmen. Wie korrigier ich
das? Muss ich etwas spezielles nachinstallieren?

P.S.: Wie bereits erwähnt: Dieses Problem habe ich nur unter SuSE
8.2. Unter SuSE 7.2 habe ich dieses Problem nicht (da kommt bei
locale -m bzw. locale -a auch eine riesige Liste...)

Grüsse und Danke,

Nicolas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Nicolas Rüegg
2003-12-14 18:46:06 UTC
Permalink
Post by Nicolas Rüegg
[... Umlaute werden nur bei ls nur mit der Option
--show-character-chars angezeigt...]
Entschuldigung... meinte natürlich "--show-control-chars".

Grüsse,

Nicolas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
David Haller
2003-12-14 19:05:51 UTC
Permalink
Hallo,
Post by Nicolas Rüegg
Hhm... wenn ich locale -a eingebe, so erscheint bei mir nur gerade
"C" und "POSIX".
"local: cannot read character map directory
'/usr/share/i18n/charmaps': No such file or directory"
Da scheint tatsächlich etwas nicht zu stimmen. Wie korrigier ich
das? Muss ich etwas spezielles nachinstallieren?
Ja. Wie du auch mit 'pin' herausbekommen kannst ;)

Dir fehlt 'glibc-i18ndata-2.3.2-6'

-dnh
--
Post by Nicolas Rüegg
*flücht*
*Monitorhinterherschmeißundneuenhol*
Das ist gut, Monitor kann ich immer gebrauchen. Obwohl dieses Jahr mir noch
keiner abgeraucht ist. Aber das Jahr ist ja auch noch nicht allzulang.
-- B.Brodesser, M.Misch in suse-linux [5.2.03]
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-***@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-***@suse.com
Lesen Sie weiter auf narkive:
Loading...