why doesn't print pass unicode strings on to the file object?
is there any reason why "print" cannot pass unicode strings on to the underlying write method? it would be really nice if this piece of code worked as expected: import sys class Wrapper: def __init__(self, file): self.file = file def write(self, data): self.file.write(data.encode("iso-8859-1", "replace")) sys.stdout = Wrapper(sys.stdout) print u"åäö" under 2.2a2 (and earlier versions), this gives me: Traceback (most recent call last): File "\test.py", line 8, in ? print u"åäö" UnicodeError: ASCII encoding error: ordinal not in range(128) (I'm willing to implement this, if the BDFL says so) </F>
is there any reason why "print" cannot pass unicode strings on to the underlying write method?
Mostly that currently print religiously calls PyObject_Str() on the objects to print, which always converts to 8-bit strings.
it would be really nice if this piece of code worked as expected:
import sys
class Wrapper: def __init__(self, file): self.file = file def write(self, data): self.file.write(data.encode("iso-8859-1", "replace"))
sys.stdout = Wrapper(sys.stdout)
print u"åäö"
under 2.2a2 (and earlier versions), this gives me:
Traceback (most recent call last): File "\test.py", line 8, in ? print u"åäö" UnicodeError: ASCII encoding error: ordinal not in range(128)
(I'm willing to implement this, if the BDFL says so)
I think this would be a good idea, but please fix the various outstanding SRE bugs first. :-) --Guido van Rossum (home page: http://www.python.org/~guido/)
participants (2)
-
Fredrik Lundh -
Guido van Rossum