[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