Ich benutze gerne Pyscripter IDE unter Windows. Folgendes Problem aber:
Mein Programm:
Code: Alles auswählen
print "Umlaute: äöü ok"
Code: Alles auswählen
*** Remote Interpreter Reinitialized ***
>>>
Umlaute: ??? ok
>>>
Code: Alles auswählen
print "Umlaute: äöü ok"
Code: Alles auswählen
*** Remote Interpreter Reinitialized ***
>>>
Umlaute: ??? ok
>>>
Tools, Options, IDE Options, Default File Encoding for new files.
Also mannually, Edit, File Format.
Read also the help file topic on File Encodings.
Code: Alles auswählen
*** Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32. ***
*** Remote Python engine is active ***
>>> print "Umlaute: äöü ok"
Umlaute: äöü ok
>>>
Dann ist deine Datei wohl immer noch UTF-8 … Wenn du ein anderes Encoding angibst, muss die Datei natürlich auch mit dem Encoding kodiert sein!Kebap hat geschrieben:Sorry, das "Remote Interpreter Reinitialized" stammt von Pyscripter und hat nichts weiter zu bedeuten, außer dass der Code soeben erneut ausgeführt wurde.
Hier nochmal das Ergebnis seit Umstellung auf UTF-8, hat sich nämlich doch geändert:Ich habe auch mal cp850 oder cp1252 probiert durch "# -*- coding: cp1252 -*-", aber so lies sich die Datei nicht starten: SyntaxError: encoding problem: utf-8 (line 0)Code: Alles auswählen
*** Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32. *** *** Remote Python engine is active *** >>> print "Umlaute: äöü ok" Umlaute: äöü ok >>>
Wobei das imho heutzutage ein NoGo ist. Man sollte von jeder halbwegs modernen Anwendung erwarten können, dass sie mindestens mit UTF-8 umgehen kann. Das Ausführen von Code in irgendeiner Art von Shell gehört zu den grundsätzlichen Dingen, die eine IDE einfach fehlerfrei beherrschen muss.jerch hat geschrieben:IDEs haben eine Vorliebe fürs Patzen, wenns zur Console/Terminal kommt
Das teste ich natürlich gern, hat aber anscheinend nicht geklappt?jerch hat geschrieben:Was meldet denn sys.stdin.encoding zurück?
Code: Alles auswählen
*** Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32. ***
*** Remote Python engine is active ***
>>> print sys.stdin.encoding
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
NameError: name 'sys' is not defined
>>> import sys
>>> print sys.stdin.encoding
None
>>> print "Umlaute: äöü ok"
Umlaute: äöü ok
>>>
Code: Alles auswählen
>>> print u"Umlaute: äöü ok"
Umlaute: äöü ok
>>>
Dem Benutzer kann aber eine sinnvolle Voreinstellung an die Hand gegeben werden (also UTF-8 statt ASCII), oder liege ich damit jetzt völlig falsch?BlackJack hat geschrieben:@snafu: Um diesen Quatsch muss sich der Benutzer immer selber kümmern. Das ist auch unabhängig von Python 2 vs. Python 3.
Microsoft hat UTF-8 erst sehr spät als Standard anerkannt (wohl eher zähneknischend), ich glaube es wird erst seit SP3 für XP oder gar Vista als Option angeboten. Bei UTF-16 vs UFT-32 geht Windows auch einen anderen Weg, d.h. nichtmal die interne Unicoderepräsentation in Python ist gleich zu Linuxdistributionen. Das Encoding-Gewurschtel ist schon ziemlich nervig.snafu hat geschrieben:Dem Benutzer kann aber eine sinnvolle Voreinstellung an die Hand gegeben werden (also UTF-8 statt ASCII), oder liege ich damit jetzt völlig falsch?
Code: Alles auswählen
# -*- coding: cp1252 -*-
print "äöü"
Code: Alles auswählen
*** Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32. ***
*** Remote Python engine is active ***
>>>
*** Remote Interpreter Reinitialized ***
>>>
äöü
>>> print "äöü"
äöü
>>>
jerch hat geschrieben:Microsoft hat UTF-8 erst sehr spät als Standard anerkannt (wohl eher zähneknischend), ich glaube es wird erst seit SP3 für XP oder gar Vista als Option angeboten. Bei UTF-16 vs UFT-32 geht Windows auch einen anderen Weg, d.h. nichtmal die interne Unicoderepräsentation in Python ist gleich zu Linuxdistributionen. Das Encoding-Gewurschtel ist schon ziemlich nervig.snafu hat geschrieben:Dem Benutzer kann aber eine sinnvolle Voreinstellung an die Hand gegeben werden (also UTF-8 statt ASCII), oder liege ich damit jetzt völlig falsch?
Jeder, der da nun ein Tool, IDE oder was auch immer schreiben will, welches plattformübergreifend funktionieren soll, muss zwangsläufig diese Eigenheiten beachten.
Code: Alles auswählen
encoding = 'cp1252' if on_windows else 'utf-8'