[Python-de] filesystemencoding

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


Martin v. Lwis schrieb:
> Du meinst wohl os.listdir. os.unlink liefert nichts zurck :-)

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

> Deshalb fragt Python nach dem encoding der locale. Wenn Deine Dateinamen
> beispielsweise mit ISO-8859-1 kodiert sind, knnte es helfen,
> LANG auf de_DE, oder vielleicht auch auf de_DE.ISO-8859-1 zu setzen.
Meine locale sind alle (auer 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 uern 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 fndig 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 fr  sehe:
äöü - Was fr mich aussieht wie UTF-8. String Escaped ist das: 
\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f
Das fr beide Flle. 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