Issue #5768: Change to Unicode output logic and test case for same.

This commit is contained in:
Vinay Sajip 2009-04-16 19:07:37 +00:00
parent 76162e305c
commit 74f045088d
2 changed files with 6 additions and 5 deletions

View File

@ -753,7 +753,7 @@ class StreamHandler(Handler):
The record is then written to the stream with a trailing newline. If
exception information is present, it is formatted using
traceback.print_exception and appended to the stream. If the stream
has an 'encoding' attribute, it is used to encode the message before
has an 'encoding' attribute, it is used to determine how to do the
output to the stream.
"""
try:
@ -764,11 +764,11 @@ class StreamHandler(Handler):
stream.write(fs % msg)
else:
try:
if (isinstance(msg, unicode) or
getattr(stream, 'encoding', None) is None):
stream.write(fs % msg)
if (isinstance(msg, unicode) and
getattr(stream, 'encoding', None)):
stream.write(fs.decode(stream.encoding) % msg)
else:
stream.write(fs % msg.encode(stream.encoding))
stream.write(fs % msg)
except UnicodeError:
stream.write(fs % msg.encode("UTF-8"))
self.flush()

View File

@ -894,6 +894,7 @@ class EncodingTest(BaseTest):
message = u'\u0434\u043e \u0441\u0432\u0438\u0434\u0430\u043d\u0438\u044f'
#Ensure it's written in a Cyrillic encoding
writer_class = codecs.getwriter('cp1251')
writer_class.encoding = 'cp1251'
stream = cStringIO.StringIO()
writer = writer_class(stream, 'strict')
handler = logging.StreamHandler(writer)