[Python-de] print von Nicht-ASCII-Zeichen

Stefan Schwarzer sschwarzer at sschwarzer.net
Mon Aug 28 16:38:23 CEST 2006


Hallo Andreas,

On 2006-08-28 16:07, Andreas Pakulat wrote:
> On 28.08.06 15:11:17, Stefan Schwarzer wrote:
>> Hallo Alexander,
>>
>> On 2006-08-28 12:43, Alexander 'boesi' Bösecke wrote:
>>> Mein Problem ist nun, dass wenn stdout nicht sichtbar ist (also auch
>>> nicht umgeleitet wird) und mit print Nicht-ASCII-Zeichen ausgegeben
>>> werden, werden alle nachfolgenden Befehle schlicht ignoriert. Das
>>> angehängte use_wx.py demonstriert dies. Wird das Programm mit 'python
>>> use_wx.py' ausgeführt, erscheinen 2 Message-Boxes und 'ä' wird auf
>>> stdout ausgegeben. Wird das Programm dagegen mit 'pythonw.exe ausgeführt,
>>> erscheint nur die 1. Message-Box. Wird 'ä' durch 'a' ersetzt, erscheinen
>>> in jedem Fall 2 Message-Boxes.
>> wenn ich dein Beispiel-Progrämmchen use_wx.py auf meinem Rechner
>> (Gentoo Linux) in einem xterm ausführe, bekomme ich nach dem
>> Klick auf die Schaltfläche "Test" einen Traceback:
>>
>> Traceback (most recent call last):
>>   File "/tmp/use_wx.py", line 15, in test
>>     print u'ä'
>> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 0: ordinal not in range(128)
> 
> Dann hast du die erste Zeile des Programms entfernt oder benutzt ein
> uraltes Python. Offensichtlich denkt dein Python naemlich der Quellcode
> waere in ascii, ist er aber nicht, was auch mit der Zeile
> 
> # -*- coding: utf_8 -*-
> 
> angegeben wird. Hier mit python2.4 funktioniert das wunderbar, sowohl
> mit UTF-8 als auch Latin1 Umgebung.

weder das eine noch das andere. Die erste Zeile ist drin und ich
verwende Python 2.4.3.

Ich habe festgestellt, dass ich das Skript mit DOS-Zeilenenden
gespeichert hatte, aber selbst, wenn ich es konvertiere, bekomme
ich den Traceback.

Viele Grüße
Stefan



More information about the python-de mailing list