Issue #5170: Fixed regression caused when fixing #5768.

This commit is contained in:
Vinay Sajip 2009-04-22 12:10:47 +00:00
parent 4c074382bd
commit cbb5308723
1 changed files with 11 additions and 1 deletions

View File

@ -766,7 +766,17 @@ class StreamHandler(Handler):
try:
if (isinstance(msg, unicode) and
getattr(stream, 'encoding', None)):
stream.write(fs.decode(stream.encoding) % msg)
fs = fs.decode(stream.encoding)
try:
stream.write(fs % msg)
except UnicodeEncodeError:
#Printing to terminals sometimes fails. For example,
#with an encoding of 'cp1251', the above write will
#work if written to a stream opened or wrapped by
#the codecs module, but fail when writing to a
#terminal even when the codepage is set to cp1251.
#An extra encoding step seems to be needed.
stream.write((fs % msg).encode(stream.encoding))
else:
stream.write(fs % msg)
except UnicodeError: