Kann man in einer mit Python erstellen Datei einen Code setzen, der die Umlaute in der "Dos-Box" richtig darstellt? Ich hab da nämlich was mit "ä"s und "ö"s und Spanischen Umlauten... Ist das möglich oder kann ich mein "Projekt" vergessen?
EDIT: Ach ja, ich wollte nur sagen, dass es mir wenig bringt, wenn ich die 'ä's und 'ö's ibn 'ae's und 'oe's umwandle, denn mit spanischen umlauten ist es ja dann automatisch von der Rechtschreibung her falsch...
Umlaute
Um Sonderzeichen wie Umlaute in der DOS-Box auszugeben musst du dem print Statement lediglich ein Unicode Objekt mitgeben.
Print kodiert den String vor dem Schreiben auf die Konsole mit dem Encoding von sys.stdout.encoding.
Beispiel:
Bei mir unter DOS:
Wie das mit deinen spanischen Zeichen aussieht weiß ich nicht da ich nicht weiß ob die in der Codepage von cp850 abgebildet sind.
Siehe: http://de.wikipedia.org/wiki/Codepage_850
Print kodiert den String vor dem Schreiben auf die Konsole mit dem Encoding von sys.stdout.encoding.
Beispiel:
Code: Alles auswählen
# -*- coding: utf-8 -*-
import sys
print "Stdout encoding: %s" % sys.stdout.encoding
print u"Geflügel"
Code: Alles auswählen
D:\>python umlaute.py
Stdout encoding: cp850
Geflügel
Siehe: http://de.wikipedia.org/wiki/Codepage_850
So lange deine Konsole kein Unicode kann wird das nicht klappen. Also cmd.exe fliegt schonmal raus. Vielleicht hast du ja mit der Windows Power Shell mehr Glück...pyrocker hat geschrieben:Kann man in einer mit Python erstellen Datei einen Code setzen, der die Umlaute in der "Dos-Box" richtig darstellt? Ich hab da nämlich was mit "ä"s und "ö"s und Spanischen Umlauten... Ist das möglich oder kann ich mein "Projekt" vergessen?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Quatsch. Es gibt keinen Konsolen die Unicode direkt verstehen, unter Linux wird meist UTF-8 verwendet. Und das DOS-Fenster (oder eher: die Eingabeaufforderung) kann Umlaute durchaus darstellen, wenn man das richtige Encoding wählt, also möglicherweise CP850 auf deutschen Windows-Versionen (weiß nicht so genau, kann mich nicht mehr erinnern).Darii hat geschrieben:So lange deine Konsole kein Unicode kann wird das nicht klappen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
wenn ich mich nicht täusche ist das gängige encoding für windows-systeme im europäischen raum "cp1252"... das ist ein mix aus iso-8859-1 und iso-8859-2... mit dem encoding werden unter windows z.b. txt-dateien gespeichert wenn man es nicht anders definiert.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Kyrillisch geht mit Codepage 855 und 866. Für Arabisch wurde wohl Codepage 720 verwendet (es gibt für arabisch auch CP708 und CP864 aber ich glaube nicht dass die von MS-DOS verwendet wurden).DjFresH hat geschrieben:kyrillisch oder arabisch aufjedenfall nicht...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Es gibt im Zusammenhang mit locale (und auch wx.Locale) noch etwas zu beachten, zumindest unter Windows (hier ein Beispiel, um das Problem zu verdeutlichen, man beachte Zeilen 7, 11ff):
(edit: Python 2.6)
Code: Alles auswählen
>>> import locale
>>> import sys
>>> sys.stdout.encoding
'cp850'
>>> print u'äöü'
äöü
>>> locale.setlocale(locale.LC_ALL, "german")
'German_Germany.1252'
>>> sys.stdout.encoding
'cp850'
>>> print u'äöü'
""?
>>> print u'äöü'.encode('windows-1252')
äöü