Il Sun, 08 Jul 2007 10:02:01 +1000, Ben Finney ha scritto: > Manlio Perillo <[EMAIL PROTECTED]> writes: > >> I have just noticed that exception objects does not handle well Unicode >> arguments. > > This error is unrelated to the fact that you created an exception > object. >
No, it is related. >> >>> e = RuntimeError(u'àèìòù') >> >>> str(e) >> Traceback (most recent call last): >> File "<stdin>", line 1, in ? >> UnicodeEncodeError: 'ascii' codec can't encode characters in position > > Your terminal has been detected as using the 'ascii' encoding, so while > that's true no attempt to output non-ASCII characters will work. > > You'll need to change whatever settings are on your terminal emulator so > that it is using an encoding (such as 'utf-8') which can display the > characters you want. This is not a problem with the terminal. And the problem is not with str(e) but with unicode(e). unicode(e) converts the exception argument to an Unicode object, but since no __unicode__ object is defined, it firsts calls the __str__ method (and this, of course, fails, since the default encoding in CPython is us-ascii) and then converts the result to an Unicode object using, again, the default encoding. Regards Manlio Perillo -- http://mail.python.org/mailman/listinfo/python-list