Bugs item #1678647, was opened at 2007-03-12 00:20
Message generated for change (Comment added) made by gbrandl
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1678647&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Unicode
Group: None
>Status: Closed
>Resolution: Wont Fix
Priority: 5
Private: No
Submitted By: Leandro Lucarella (llucax)
Assigned to: M.-A. Lemburg (lemburg)
Summary: Weird behavior Exception with unicode string

Initial Comment:
This simple python program:
-------------------------------
raise Exception(u'Muri\u00f3')
-------------------------------

prints:
-----------------------------------
Traceback (most recent call last):
  File "pylog.py", line 1, in ?
    raise Exception(u'Muri\u00f3')
Exception
-----------------------------------

While not using an unicode character, seems to work fine (even if using an 
unicode parameter):
--------------------------
raise Exception(u'Murio')
--------------------------

prints:
-----------------------------------
Traceback (most recent call last):
  File "pylog.py", line 1, in ?
    raise Exception(u'Murio')
Exception: Murio
-----------------------------------

This seems to break the logging module when calling 
logging.exception(u'Muri\u00f3'), for example.

Tested in Python 2.4.4 and 2.5 (debian).

----------------------------------------------------------------------

>Comment By: Georg Brandl (gbrandl)
Date: 2007-03-12 15:18

Message:
Logged In: YES 
user_id=849994
Originator: NO

I fixed the "prints no newline" problem in rev. 54288.
There's nothing sensible we can do about the unicode conversion, so
closing as "won't fix".

You should always encode or repr() unicode exception arguments.

----------------------------------------------------------------------

Comment By: Georg Brandl (gbrandl)
Date: 2007-03-12 14:14

Message:
Logged In: YES 
user_id=849994
Originator: NO

Yes, or more precisely, the unicode string is converted to a byte string
using Python's default encoding, which is ASCII per default.

----------------------------------------------------------------------

Comment By: Leandro Lucarella (llucax)
Date: 2007-03-12 14:03

Message:
Logged In: YES 
user_id=240225
Originator: YES

But why the conversion is failing in the first place? Because just plain 7
bits ASCII is expected?

----------------------------------------------------------------------

Comment By: Hye-Shik Chang (perky)
Date: 2007-03-12 04:43

Message:
Logged In: YES 
user_id=55188
Originator: NO

That's from line 1216-1230 of Python/pythonrun.c as in trunk.
It tries PyObject_Str(exception) and skips printing line terminator when
it failed.
And the behavior came from r8084
(http://svn.python.org/view/python/trunk/Python/pythonrun.c?rev=8084&r1=8070&r2=8084).

Hmm. I think it should put a LF even if the conversion failed. (encoding
the unicode with "ignore" or "replace" would make some confusion and
putting it in PyObject_Repr() makes inconsistency.)

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1678647&group_id=5470
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to