"Decoding unicode is not supported" in unusual situation

John Nagle nagle at animats.com
Wed Mar 7 14:25:47 EST 2012


On 3/7/2012 3:42 AM, Steven D'Aprano wrote:

> I *think* he is complaining that some other library -- suds? -- has a
> broken test for Unicode, by using:
>
> if type(s) is unicode: ...
>
> instead of
>
> if isinstance(s, unicode): ...
>
> Consequently, when the library passes a unicode *subclass* to the
> tounicode function, the "type() is unicode" test fails. That's a bad bug.

    No, that was my bug.

    The library bug, if any, is that you can't apply

	unicode(s, errors='replace')

to a Unicode string. TypeError("Decoding unicode is not supported") is 
raised.  However

   	unicode(s)

will accept Unicode input.

The Python documentation
("http://docs.python.org/library/functions.html#unicode") does not 
mention this.  It is therefore necessary to check the type before
calling "unicode", or catch the undocumented TypeError exception
afterward.


					John Nagle




More information about the Python-list mailing list