diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-10-15 21:36:56 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-10-15 21:36:56 (GMT) |
commit | a5cd255a7cb15c7920171f0796cf163a00a5ecaf (patch) | |
tree | 829e414c09d9b59647517e63339bd17ac572d967 /Lib | |
parent | 8ad0eac7ff030940949e26688311ec857999735d (diff) | |
download | cpython-a5cd255a7cb15c7920171f0796cf163a00a5ecaf.zip cpython-a5cd255a7cb15c7920171f0796cf163a00a5ecaf.tar.gz cpython-a5cd255a7cb15c7920171f0796cf163a00a5ecaf.tar.bz2 |
Close #19267: Fix support of multibyte encoding (ex: UTF-16) in the logging
module.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/logging/__init__.py | 2 | ||||
-rw-r--r-- | Lib/test/test_logging.py | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 0e8e3dd..cda781a 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -857,7 +857,7 @@ class StreamHandler(Handler): try: if (isinstance(msg, unicode) and getattr(stream, 'encoding', None)): - ufs = fs.decode(stream.encoding) + ufs = u'%s\n' try: stream.write(ufs % msg) except UnicodeEncodeError: diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 31bc48e..0c10580 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -1060,6 +1060,24 @@ class EncodingTest(BaseTest): #Compare against what the data should be when encoded in CP-1251 self.assertEqual(s, '\xe4\xee \xf1\xe2\xe8\xe4\xe0\xed\xe8\xff\n') + def test_encoding_utf16_unicode(self): + # Issue #19267 + log = logging.getLogger("test") + message = u'b\u0142\u0105d' + writer_class = codecs.getwriter('utf-16-le') + writer_class.encoding = 'utf-16-le' + stream = cStringIO.StringIO() + writer = writer_class(stream, 'strict') + handler = logging.StreamHandler(writer) + log.addHandler(handler) + try: + log.warning(message) + finally: + log.removeHandler(handler) + handler.close() + s = stream.getvalue() + self.assertEqual(s, 'b\x00B\x01\x05\x01d\x00\n\x00') + class WarningsTest(BaseTest): |