[Python-Dev] Revised PEP 349: Allow str() to return unicode strings
Dieter Maurer
dieter at handshake.de
Wed Aug 24 21:11:18 CEST 2005
The following message is a courtesy copy of an article
that has been posted to comp.lang.python as well.
Neil Schemenauer <nas at arctrix.com> writes on Mon, 22 Aug 2005 15:31:42 -0600:
> ...
> Some code may require that str() returns a str instance. In the
> standard library, only one such case has been found so far. The
> function email.header_decode() requires a str instance and the
> email.Header.decode_header() function tries to ensure this by
> calling str() on its argument. The code was fixed by changing
> the line "header = str(header)" to:
>
> if isinstance(header, unicode):
> header = header.encode('ascii')
Note, that this is not equivalent to the old "str(header)":
"str(header)" used Python's "default encoding" while the
new code uses 'ascii'.
The new code might be more correct than the old one has been.
> ...
> Alternative Solutions
>
> A new built-in function could be added instead of changing str().
> Doing so would introduce virtually no backwards compatibility
> problems. However, since the compatibility problems are expected to
> rare, changing str() seems preferable to adding a new built-in.
Can we get a new builtin with the exact same behaviour as
the current "str" which can be used when we do require an "str"
(and cannot use a "unicode").
Dieter
More information about the Python-Dev
mailing list