Seite 1 von 1
Problem mit Umlauten in der Windows-Shell
Verfasst: Donnerstag 21. September 2006, 20:18
von basti33
Hallo,
ich möchte meinen Vokabeltrainer gerne auch unter Windows benutzen können. Leider ist dies nicht möglich, weil die zugehörige Shell sich weigert Umlaute korrekt darzustellen (was sehr unpraktisch ist, wenn man Französisch lernt) und stattedessen irgendwelche kryptischen Zeichen wie |Ã präsentiert. Als Magic-Line habe ich schon
sowie latin-1 und iso-8859-1 versucht. Alles ohne Erfolg.
Wenn ich in der Shell jedoch
eingebe, erhalte ich als Ausgabe auch ein korrekt dargestelltes ä.
Hat jemand eine Idee, wie sich mein Problem lösen lässt?
Danke
Verfasst: Donnerstag 21. September 2006, 20:25
von mitsuhiko
So sollte das unter Windows gehen
Verfasst: Donnerstag 21. September 2006, 20:28
von basti33
Danke für die Antwort.
Ein paar Fragen noch: muss ich das dann hinter jeden String schreiben, den ich mit print ausgeben möchte und ist die Magic-Line unter Windows überflüssig?
Ich hab ja schon immer gewusst, dass Microsoft schlecht ist, aber so schlecht...

Verfasst: Donnerstag 21. September 2006, 20:36
von mitsuhiko
basti33 hat geschrieben:Ein paar Fragen noch: muss ich das dann hinter jeden String schreiben, den ich mit print ausgeben möchte und ist die Magic-Line unter Windows überflüssig?
Nein. Das Encoding cookie muss mit deinen Editoreinstellungen übereinstimmen.
basti33 hat geschrieben:Ich hab ja schon immer gewusst, dass Microsoft schlecht ist, aber so schlecht...

Und unter Linux ist es anders? Ob das defaultencoding gesetzt ist, ist meines Wissens nach nicht definiert.
Ich würde dir raten ein Handbuch zu Charsets durchzulesen. Das Thema ist weit komplexer als du annimmst.
Verfasst: Freitag 22. September 2006, 05:45
von jens
@basti33:
Schau mal hier:
[wiki]Von Umlauten, Unicode und Encodings[/wiki]
Eine Lösung ist das Umbiegen von sys.stdout... Macht z.B. der Encodinghelper von gerold:
http://gelb.bcom.at/trac/misc/wiki/Encodinghelper
Verfasst: Freitag 22. September 2006, 13:15
von lunar
basti33 hat geschrieben:
Ich hab ja schon immer gewusst, dass Microsoft schlecht ist, aber so schlecht...

Naja, unter Linux kannst du ganz schnell in ähnliche Probleme geraten.
Verfasst: Dienstag 14. November 2006, 10:56
von Nirven
Mit der Boardsuche bin ich auf diesen Thread gestoßen, und bei meinem eigentlichen Problem habt ihr mir auch schon geholfen. Ich mag encodings nicht...
Was mir aber bei der Fehlersuche aufgefallen ist: Mein Python (also, die Variante in der Kommandozeile) lebt auch mit einem komishcen Encoding. Auf Umlaute reagiert das Ding nur mit einem komischen Piepton, der mich an die alten Fehlermeldungen per PC-Speaker erinnert.
Kann ich irgendwo feststellen/festlegen, mit welchem Encoding das Ding arbeitet? In der normalen Kommandozeile funktioniert alles, aber sobald ich Python starte nimmt es keine Umlaute mehr.
Ich hoffe mir kann jemand helfen, so läßt sich schwer "mal eben" was probieren.
Danke schonmal,
Sören
Verfasst: Dienstag 14. November 2006, 19:02
von basti33
Verfasst: Mittwoch 15. November 2006, 07:56
von Nirven
Danke, hätte ich auch selber drauf kommen können...
Das liefert mir dann
und erklärt das Problem. setdefaultencoding wird laut Doku aus dem Modul entfernt nach dem "site" abgehandelt wurde (habe ich vorher noch nie was von gehört). Aber über ein Modul "sitecustomize" kann man noch drauf zugreifen.
In meinem sizecustomize steht
Code: Alles auswählen
import sys
sys.setappdefaultencoding = sys.setdefaultencoding
(ist das Standard? Dann muss man die Funktion doch garnicht erst entfernen...).
Damit kann ich dann
machen, was auch in sofern funktioniert, als dass jetzt
ist.
Bis dahin verständlich, aber warum kann ich immernoch keine Umlaute eingeben? Mit iso-8859-1 sollte das doch funktionieren...
Ich bin verwirrt.
Edit: Ich habe auch "sitecustomize" verändert, um schon bei der initialisierung auf ein anderes Encoding zu wechseln. utf-8 und iso-8859-1 habe ich ausprobiert, funktioniert beides nicht.
Verfasst: Mittwoch 15. November 2006, 11:25
von gerold
Nirven hat geschrieben:Ich bin verwirrt.
Hi Nirven!
Du solltest ``sitecustomize.py`` nicht anrühren. Dieses Modul wird jedes mal ausgeführt, wenn ein Python-Programm gestartet wird. Änderungen in ``sitecustomice.py`` ändern die Einstellungen für **jedes** Python-Programm auf deinem Computer. Das kann zu unerwünschten Nebeneffekten führen. Das ist nicht schlecht, wenn man einen Ordner zum Python-Pfad hinzufügen will, aber ansonsten sollte man sehr vorsichtig damit umgehen.
Um dir einen Überblich über die Thematik zu verschaffen, empfehle ich dir
http://www.python-forum.de/topic-5095.html.
Probier auch mal aus, deine ``sitecustomize.py`` umzubenennen, so dass diese nicht mehr ausgeführt wird. Vielleicht steht ja schon etwas drinnen, was Python durcheinander bringt.
- Welches Betriebssystem verwendest du?
- Welche Konsole verwendest du?
``locale`` gibt dir unter Linux das eingestellte Encoding zurück.
mfg
Gerold

Verfasst: Mittwoch 15. November 2006, 12:46
von Nirven
Ich habe die sitecusomize auch wieder in den Ursprungszustand versetzt, ich wollte nur probieren was passiert wenn ich dort bereits ein anderes encoding setze.
Da steht jetzt nur drinn, was vorher auch drinn stand
Code: Alles auswählen
import sys
sys.setappdefaultencoding = sys.setdefaultencoding
Betriebssystem ist Windows XP Prof, Konsolle ist das normale cmd. In der Konsole von Windows funktioniert auch alles, aber sobald ich python starte (einfach 'python' eingetippt) aktzeptiert er nur noch Standard-Zeichen (ich vermute ascii). Mein Python:
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Den anderen thread habe ich schon gelesen, und mein ursprünglcihes Problem mit einem wxPython-Script zwar nicht so ganz verstanden, aber
gelöst.
Filesystemencoding ist übrigens 'mbcs', falls das hilft?
Gruß und Dank,
Sören
Verfasst: Mittwoch 15. November 2006, 12:54
von gerold
Nirven hat geschrieben:Da steht jetzt nur drinn, was vorher auch drinn stand
Code: Alles auswählen
import sys
sys.setappdefaultencoding = sys.setdefaultencoding
Hallo Nirven!
Normalerweise existiert diese Datei ``sitecustomize.py`` nicht. Wenn sie existiert, dann hat schon irgendein Programm eine Änderung vorgenommen. Probier es doch mal aus, die Datei umzubenennen oder woanders hin zu verschieben, den Computer neu zu starten (vielleicht läuft irgendein Python-Service im Hintergrund) und es dann noch einmal auszuprobieren.
mfg
Gerold
