So, ich bin jetzt ein wenig schlauer...
Es liegt definitiv an meinem Linux-System
Ich hab zwar mal das folgende Probiert, aber eine Lösung ist das nicht:
Code: Alles auswählen
import sys, locale
tryCodecs = ["utf-8", "latin-1"]
tryCodecs.append(sys.getdefaultencoding().lower())
tryCodecs.append(sys.getfilesystemencoding().lower())
tryCodecs.append(locale.getpreferredencoding().lower())
tryCodecs = tuple(set(tryCodecs))
def makeUnicodeList(items):
def tryConvert(item):
for codec in tryCodecs:
try:
return unicode(item, codec)
except UnicodeError:
pass
raise UnicodeError("Can't convert item")
result = []
for item in items:
if isinstance(item, unicode):
result.append(item)
continue
try:
item = tryConvert(item)
except UnicodeError:
continue
else:
result.append(item)
return result
dirList = os.listdir(u".")
dirList = makeUnicodeList(dirList)
Das ganze hilft leider nicht viel. Ich hab zwar im Ergebnis unicode, aber es funktionieren dann keine Befehle wir os.stat() und os.path.* mehr. Da diese die Verz./Dateien nicht mehr finden können
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
