[Python-de] filesystemencoding

jens python_gmane at jensdiemer.de
Mit Apr 5 07:52:14 CEST 2006


Martin v. Löwis schrieb:
> Du meinst wohl os.listdir. os.unlink liefert nichts zurück :-)

Klar, meinte ich os.listdir... sorry...

> Deshalb fragt Python nach dem encoding der locale. Wenn Deine Dateinamen
> beispielsweise mit ISO-8859-1 kodiert sind, könnte es helfen,
> LANG auf de_DE, oder vielleicht auch auf de_DE.ISO-8859-1 zu setzen.
Meine locale sind alle (außer LC_ALL) auf "de_DE.UTF-8" eingestellt.

Ich hab mir TestDaten gemacht:
       <verz>  ./dir eins/
       <verz>  ./dir zwei äöüß/
       <datei> ./file eins.txt
       <datei> ./file zwei äöüß.txt

Im mc sehe ich die Namen richtig. Mit dem ls Befehl allerdings nicht. Da 
sind nur Fragezeichen statt den Umlauten.


> Welche Python-Funktion hat den Probleme, und worin äußern die sich?

Also ich mache es nun so. Wenn ein item von os.listdir() kein unicode 
ist, probiere ich verschiedene codecs durch (latin-1, utf-8, ascii) und 
einer passt dann auch. Im Ergebniss hab ich dann also alle items in 
unicode...

Nun kann ich damit aber irgendwie nix mehr anfangen, weil os.stat() z.B. 
die Dateien nicht mehr findet und auch os.path.isfile bzw. isdir nicht 
mehr fündig werden.

Also hab ich nochmal ein neuen Test gemacht. Diesmal hab ich per Samba 
von Windows aus neue Dateien mit Umlauten gemacht. Siehe da, nun klappt 
es direkt! Also os.listdir() spuckt direkt unicode aus und os.stat() und 
os.path.* arbeiten richtig.


Das komische ist, das ich auf der Konsole folgendes für äöüß sehe:
äöüà - Was für mich aussieht wie UTF-8. String Escaped ist das: 
\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f
Das für beide Fälle. Also einmal bei den Dateien die ich direkt auf dem 
Ubuntu-Rechner erzeugt hab und einmal die Dateien die ich per Samba 
erstellt hab.
Ein Unterschied sieht man allerdings im mc! Die durch Samba erstellten 
Dateien sehe ich nur mit äöüà die unter Linux erstellten Dateien sehe 
ich richtig mit äöüß

Also liegt das ganze Problem wohl an meiner Linux installation :(

Nur sollte Python in dem Falle nicht irgendwie trotzdem funktionieren?

Kompliziert wird es, weil ich ja die Dateinamen als Webseite anzeigen 
lasse, mit Links. Diese Links sollten auch funktionieren ;)



-- 
Mfg.

Jens Diemer


----
CMS in pure Python CGI: http://www.pylucid.org