Umlaute und die Kommandozeile

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also ich hab mein Test-Skript nur unter Win gestet und das läuft wunderbar, bis auf die Dateinamen...
Komischerweise funktioniert es nicht in SciTE :shock:
Aber spuckt er mir auch ein outencoding: mbcs aus, was immer das auch sein mag... Hab noch nicht nachgesehen, ob man das irgendwie Einstellen kann...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Zu diesem Thema möchte ich noch hierhin verweisen: http://www.python-forum.de/viewtopic.php?t=5095
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

gerold hat geschrieben: Das Coding der Konsole bekommst du mit "sys.stdout.encoding" raus.

Unabhängig vom Coding der Konsole gibt es noch das Coding, in dem die Dateinamen gespeichert werden. Dieses Coding bekommst du mit "sys.getfilesystemencoding()" heraus.

Da man in manchen IDEs, beim Ausführen nicht auf "sys.stdout.encoding" zugreifen kann oder einfach nur nichts dabei raus kommt, nehme ich als Alternative noch "sys.getfilesystemencoding()" mit rein. Das klappt bei mir recht gut.

OUTCODING = sys.stdout.encoding or sys.getfilesystemencoding()
FSE = sys.getfilesystemencoding()
So geht es nicht überall: PythonWin (build 208, Python 2.4.3) und Eric (genaue Version ist mir im Moment nicht zugänglich, wahrscheinlich 3.8.xxx oder so) brechen bei der Definition von OUTCODING mit einem AttributeError ab. Also wohl besser, wenn auch umständlicher:

Code: Alles auswählen

try:
    OUTCODING = sys.stdout.encoding
except AttributeError:
    OUTCODING = sys.getfilesystemencoding()
oder ähnlich.
Antworten