[Python-Dev] why doesn't print pass unicode strings on to the file object?

Guido van Rossum guido@python.org
Mon, 17 Sep 2001 13:22:28 -0400


> Martin von Loewis wrote:
> > 
> > > is there any reason why "print" cannot pass unicode
> > > strings on to the underlying write method?
> > 
> > Mostly because there is no guarantee that every .write method will
> > support Unicode objects. I see two options: either a stream might
> > declare itself as supporting unicode on output (by, say, providing a
> > unicode attribute), or all streams are required by BDFL pronouncement
> > to accept Unicode objects.
> 
> I think the latter option would go a long way: many file-like
> objects are written in C and will use the C parser markers. These
> can handle Unicode without problem (issuing an exception in case
> the conversion to ASCII fails). 

Agreed, but BDFL pronouncement doesn't make it so: individual modules
still have to be modified if they don't do the right thing (especially
3rd party modules -- we have no control there).

And then, what's the point of handling Unicode if we only accept
Unicode-encoded ASCII strings?

> The only notable exception is
> the cStringIO module -- but this could probably be changed to
> be buffer interface compliant too.

Sure, just submit a patch.

--Guido van Rossum (home page: http://www.python.org/~guido/)