Seite 1 von 1
Problem mit strftime und Monat März
Verfasst: Montag 21. Mai 2007, 18:08
von tanneg
Hallo
ich hätte da mal ein Problem:
Unter Linux gibt mir der Befehl
korrekt 'März' aus.
Unter Windows erhalte ich stattdessen 'Mõrz', also statt einem ä ein o mit Tilde.
Auf beiden Systemen habe ich vorher mit
auf Deutsch umgestellt.
Hat jemand 'ne Idee woran das liegt?
Danke im voraus...
tanneg
Verfasst: Montag 21. Mai 2007, 18:56
von Sr4l
Ist das "o mit tilde" nur in Windows CMD oder auch in der INteractiven Python IDLE ?
Ich vermute es ist nur bei CMD.
hast du ein Encodeing angegeben?
Beispiel Kopfzeile:
**edit** Kopfzeile nochmal geändert.
Verfasst: Montag 21. Mai 2007, 19:08
von tanneg
Hallo Sr4l
...stimmt, in der Pythonkonsole unter Windows wird es tatsächlich korrekt ausgegeben.
Ein Encoding habe ich abgegeben: # -*- coding: utf-8 -*-
Zur Erklärung. Ich schreibe ein Programm welches unter Linux und Windows lauffähig sein soll. entwickelt wird das Programm unter Linux. Ich habe bei den Umlauten keine Probleme. Es ist lediglich der o.g. Sachverhalt der Probleme bereitet.
Gruß
tanneg
Verfasst: Montag 21. Mai 2007, 19:59
von Sr4l
das ist der inhalt von t.py
Code: Alles auswählen
#! /usr/bin/env python
#-*- coding: latin-1 -*-
print "LÖL"
print u"LÖL"
und das ist die CMD Ausgabe unter XP SP2:
u = Unicode String
mit UTF-8 als codeing gibt es nen error bei ``print u"LÖL"``
Verfasst: Montag 21. Mai 2007, 20:17
von tanneg
Danke für die Antworten, aber:
so klappt es unter Windows, aber unter Linux nicht mehr...
Es geht auch gar nicht so sehr um 'print'. Ich habe nur festgestellt, dass das Ergebnis in der Konsole oder Shell das gleiche ist wie im Programm.
Die Methode strftime erzeugt einen String, den ich intern, also im Programm verwende. Dort steht dann z.B:
Code: Alles auswählen
s = datetime.datetime(2000, 3, 1).strftime('%B')
return s.replace('ä', 'ä')
Bei .replace wird unter Windows das 'ä' nicht erkannt (wegen o Tilde statt ä)!
Ich habe schon mit verschieden Encodings getestet, und entsprechenden Dateikodierungen.
Was mache ich falsch? Seit tagen...
Danke und Grüße
tanneg
Verfasst: Montag 21. Mai 2007, 20:47
von Sr4l
das liegt nur an deinem UTF-8
kann das sein?
mach mal latin-1 daraus
Verfasst: Montag 21. Mai 2007, 20:54
von BlackJack
`strftime()` liefert das Ergebnis in der Kodierung die in der "Umgebung" eingestellt ist.
Verfasst: Montag 21. Mai 2007, 20:56
von Sr4l
und Windows CMD kann das nicht?
wie gesagt wenn man es als Unicode String printet funzt es unter Windows.
Verfasst: Montag 21. Mai 2007, 21:17
von BlackJack
Was kann Windows CMD nicht? Und wie bekommst Du Unicode von `strftime()`?
Verfasst: Montag 21. Mai 2007, 21:21
von Sr4l
von strftime() bekomme ich garnicht
aber ist auch egal ahbe heute wieder garnicht geschaft weil ich nur im forum gelesen habe

Verfasst: Montag 21. Mai 2007, 22:45
von Leonidas
Sr4l hat geschrieben:wie gesagt wenn man es als Unicode String printet funzt es unter Windows.
Du printest aber kein Unicode, die Ausgabe ist immer in einem Encoding wie UTF-8 oder Latin-1.
Siehe: [wiki]Von Umlauten, Unicode und Encodings[/wiki],
Allgemeine Lösung für Umlautprobleme?, dort könnten deine Probleme schon gelöst sein.