Seite 1 von 1

Umlaute

Verfasst: Donnerstag 4. Dezember 2008, 18:24
von pyrocker
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...

Verfasst: Donnerstag 4. Dezember 2008, 19:31
von pyrocker
Hat keiner ne Idee???
(Ich weiss, ich bin zu ungeduldig... Aber das ist mein Charakter, da kann ich nix ändern ;))

Verfasst: Donnerstag 4. Dezember 2008, 20:05
von Zap
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:

Code: Alles auswählen

# -*- coding: utf-8 -*-

import sys

print "Stdout encoding: %s" % sys.stdout.encoding
print  u"Geflügel"
Bei mir unter DOS:

Code: Alles auswählen

D:\>python umlaute.py
Stdout encoding: cp850
Geflügel
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

Re: Umlaute

Verfasst: Freitag 5. Dezember 2008, 01:13
von Darii
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?
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...

Re: Umlaute

Verfasst: Freitag 5. Dezember 2008, 11:51
von Leonidas
Darii hat geschrieben:So lange deine Konsole kein Unicode kann wird das nicht klappen.
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).

Verfasst: Freitag 5. Dezember 2008, 11:58
von szallah
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.

Verfasst: Freitag 5. Dezember 2008, 12:35
von DjFresH
hmmm also so viel ich weiss kann man im DOS aufjedenfall das
spanische ñ darstellen....
sogar das zeichen für Angström....

kyrillisch oder arabisch aufjedenfall nicht...

Verfasst: Freitag 5. Dezember 2008, 12:48
von Leonidas
DjFresH hat geschrieben:kyrillisch oder arabisch aufjedenfall nicht...
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).

Verfasst: Freitag 5. Dezember 2008, 19:39
von fhoech
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):

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')
äöü
(edit: Python 2.6)