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

Diez B. Roggisch deets at web.de
Mon Aug 28 22:54:56 CEST 2006


Alexander 'boesi' Bösecke schrieb:
 > Hi
 >
 > Am 28.08.2006 17:41:28 schrieb Diez B. Roggisch:
 >
 >> Was aber auf jeden Fall klappen sollte: sys.stdout durch einen 
encoding-stream aus dem codecs modul zu ersetzen. Dann sollte das unter 
allen Umstaenden gehen.
 >>
 >> Also etwa so in der Art:
 >>
 >> sys.stdout = codecs.EncodedFile(sys.stdout, data_encoding="utf-8", 
errors="foo")
 >
 > Wenn ich in die beiden oben geposteten Skripte das einfüge:
 >
 > ---snip---
 > import sys, codecs
 > sys.stdout = codecs.EncodedFile(sys.stdout, data_encoding='utf8', 
file_encoding='utf8', errors='replace')
 > ---snap---
 >
 > ... bekomme ich folgenden Fehler:
 >
 > ---snip---
 > Traceback (most recent call last):
 >   File "only_w32.py", line 8, in ?
 >     print u'+ñ'
 >   File "c:\tools\python\Lib\codecs.py", line 508, in write
 >     data, bytesdecoded = self.decode(data, self.errors)
 > UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in 
position 0: ordinal not in range
 > (128)
 > ---snap---
 >
 > Wie kommt da der ascii codec hin? Ich hab doch utf8 angegeben, oder
 > nicht?

Hm, verstehe ich auch nicht. Ich haette gedacht das es geht - aber das 
hier tuts auf jeden Fall:

# -*- coding: utf-8 -*-
import sys, codecs

t = u"ä"
sys.stdout = codecs.getwriter("utf-8")(sys.stdout)
print t


MfG Diez




More information about the python-de mailing list