[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