What's your system? Simple Chinese Windows??? 2008/8/13 Victor Lin <[EMAIL PROTECTED]>
> Hi, > I'm writting a application using python standard logging system. I > encounter some problem with unicode message passed to logging library. > I found that unicode message will be messed up by logging handler. > > piese of StreamHandler: > > try: > self.stream.write(fs % msg) > except UnicodeError: > self.stream.write(fs % msg.encode("UTF-8")) > > It just write the message to stream. If there is some unicode error, > it would rewrite msg with utf8 encoding. > > I write some code to try: > > import sys > print u'中文字�y��' > print sys.stdout.encoding > sys.stdout.write(u'中文') > > result of that program: > > 中文字�y�� > cp950 > Traceback (most recent call last): > File "update_stockprice.py", line 92, in <module> > sys.stdout.write(u'��剜?') > UnicodeEncodeError: 'ascii' codec can't encode characters in position > 0-1: ordin > al not in range(128) > > It show that.... > > 1. print statement encode what it get with stream.encoding? > 2. stream.write don't do anything like encoding, just write it > (because it might be binary data?) > > So the problem is : the StreamHandler of standard logging library use > stream.write to log message, if there is unicode error, unicode string > will be encode to utf8. This behavior mess my unicode up. > > Here I modify the code of StreamHandler: > > try: > print >> self.stream, msg > #self.stream.write(fs % msg) > except UnicodeError: > self.stream.write(fs % msg.encode("UTF-8")) > > I replace stream.write with print statement, so that it will try to > use stream.encoding to encode msg. Now everything works fine. > > My question is : > Could the behavior of StreamHandler be considered as a bug? > If it is, how to report this bug? > Is my solution correct? > Are there any side effect will caused by doing so? > If the code I write is fine, and solve that problem, how to report it > to Python's project? > I think this could be helpful for people who also encountered this > problem. > > Thanks. > Victor Lin. > -- > http://mail.python.org/mailman/listinfo/python-list
-- http://mail.python.org/mailman/listinfo/python-list