From 5360d003b666f874a05dd532ecf511cd459117f8 Mon Sep 17 00:00:00 2001 From: "R. David Murray" Date: Mon, 27 Dec 2010 19:17:17 +0000 Subject: #1379416: encode charset name to ascii to avoid unicode promotion of output --- Lib/email/charset.py | 2 +- Lib/email/test/test_email.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'Lib/email') diff --git a/Lib/email/charset.py b/Lib/email/charset.py index ad56c58f80..dddaa76c55 100644 --- a/Lib/email/charset.py +++ b/Lib/email/charset.py @@ -209,7 +209,7 @@ class Charset: input_charset = unicode(input_charset, 'ascii') except UnicodeError: raise errors.CharsetError(input_charset) - input_charset = input_charset.lower() + input_charset = input_charset.lower().encode('ascii') # Set the input charset after filtering through the aliases and/or codecs if not (input_charset in ALIASES or input_charset in CHARSETS): try: diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index 358b6a7ef0..4aac500ce8 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -3140,6 +3140,13 @@ A very long line that must get split to something other than at the 'attachment; filename*="iso-8859-1\'\'Fu%DFballer.ppt"', msg['Content-Disposition']) + def test_encode_unaliased_charset(self): + # Issue 1379416: when the charset has no output conversion, + # output was accidentally getting coerced to unicode. + res = Header('abc','iso-8859-2').encode() + self.assertEqual(res, '=?iso-8859-2?q?abc?=') + self.assertIsInstance(res, str) + # Test RFC 2231 header parameters (en/de)coding class TestRFC2231(TestEmailBase): -- cgit v1.2.1