Python and Exceptions containing Unicode messages
Python (2.4 and 2.5 tested) seems to have problems when an exception is thrown that contains non-ASCII text as a message.
In my case I constructed an exception like
>>> try: ... raise Exception(u'Error when printing ü') ... except Exception, e: ... print e ... Traceback (most recent call last): File "", line 4, in ? UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 20: ordinal not in range(128)
That's at least what the tutorial advocates [1].
Same with unicode(e) instead of the print directive.
Using unicode(e, 'utf8') doesn't do the job:
TypeError: coercing to Unicode: need string or buffer, instance found
A method __unicode__() doesn't seem to exist [2], and thus I'm only left with:
>>> try:
... raise Exception(u'Error when printing ü'.encode('utf8'))
... except Exception, e:
... print e
...
Error when printing ü
UTF-8 is my systems default encoding.
It seems I'm not the first one to stumble upon this behavior [3], I just wonder why an error like this can still exist in 2008. Maybe I should file a bug report.
Update: the bug report
