Seite 2 von 2
Verfasst: Montag 17. Juli 2006, 07:43
von Rebecca
Wie auch immer:
Code: Alles auswählen
Python 2.2 (#1, Feb 17 2003, 21:43:03) [C] on aix4
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.platform
'aix4'
>>>
Das Problem hatte ich auch schonmal, rauszufinden wie der entsprechenden Plattform-Strings heissen. Mac OSX ist ja auch Linux-like, da kommt bei sys.platform irgendwas mit "darwin" raus... (der Name des Kernels.)
Verfasst: Montag 17. Juli 2006, 08:41
von gerold
BlackJack hat geschrieben:Es gibt keinen Weg die Kodierungen verlässlich zu raten.
[...]
Optionen anbieten mit denen der Anwender explizit sagen kann was er haben möchte.
Hi BlackJack!
Leider ist es so, dass man die Kodierung raten muss. Allerdings kann man das Raten verbessern. Je mehr Informationen ich über die Platform habe, desto eher bekomme ich das korrekte Encoding raus. Ein 90 % richtig geratenes Encoding ist ja auch nicht schlecht, oder? Außerdem könnte ich ja prüfen, ob es eine Konfigurationsdatei gibt, die ein Encoding vorgibt, oder das Umleiten über den Stream-Writer unterbindet.
encoding.ini (alles automatisch):
encoding.ini (utf-8 vorgegeben):
encoding.ini (nicht verwenden):
Wenn die INI-Datei nicht im Projektordner existiert, dann wird der Encodinghelper für STDOUT verwendet und es wird versucht, das Encoding automatisch raus zu bekommen. Wenn ich ihn als Programmierer nicht verwenden möchte, dann muss ich ihn ja nicht importieren.
Und? Klingt das für dich besser?
lg
Gerold

Verfasst: Freitag 1. September 2006, 11:28
von gerold
Hi!
Ich habe mal wieder etwas am Encodinghelper geändert.
Wenn erkannt wird, dass IDLE mit im Spiel ist, dann leitet
der Encodinghelper STDOUT nicht um.
Trac:
http://gelb.bcom.at/trac/misc/wiki/Encodinghelper
Quellcode:
http://gelb.bcom.at/trac/misc/browser/e ... ghelper.py
Damit der Zweck dieses Moduls nicht vergessen wird:
Importiert man das Modul ``encodinghelper.py``, dann wird geprüft, welches Encoding für STDOUT eingestellt ist. Gibt ``sys.stdout.encoding`` diese Information nicht her, wird herausgefunden, welches Betriebssystem verwendet wird und auf Grund dieser Information noch einmal versucht, das Encoding herauszufinden.
Danach wird STDOUT über den StreamWriter des Moduls "codecs" umgeleitet und damit automatisch von **Unicode** in das Zielplattform-Encoding umgewandelt.
Falls dieser Automatismus das korrekte Encoding nicht herausfinden kann, kann man das Encoding in eine INI-Datei schreiben, die vom ``encodinghelper.py`` ausgelesen wird. So kann man auch Sonderfälle abdecken.
Verbesserungsvorschläge sind erwünscht.
lg
Gerold

Verfasst: Freitag 1. September 2006, 11:33
von jens
Ich hab mal Links hier eingefügt:
[wiki]Von Umlauten, Unicode und Encodings[/wiki]