Skip to content

Commit 73b1836

Browse files
Address review comments.
1 parent cece1e7 commit 73b1836

3 files changed

Lines changed: 17 additions & 4 deletions

File tree

Lib/email/charset.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
'shift_jis': (BASE64, None, 'iso-2022-jp'),
6060
'iso-2022-jp': (BASE64, None, None),
6161
'koi8-r': (BASE64, BASE64, None),
62-
'utf-8': (SHORTEST, BASE64, 'utf-8'),
6362
}
6463

6564
# Map Python codec names to their corresponding MIME/IANA names.
@@ -273,7 +272,7 @@ def __init__(self, input_charset=DEFAULT_CHARSET):
273272
# Set the attributes, allowing the arguments to override the default.
274273
self.header_encoding = henc
275274
self.body_encoding = benc
276-
self.output_charset = conv
275+
self.output_charset = ALIASES.get(conv, conv)
277276
# Now set the codecs. If one isn't defined for input_charset,
278277
# guess and try a Unicode codec with the same name as input_codec.
279278
self.input_codec = CODEC_MAP.get(self.input_charset,

Lib/test/test_email/test_contentmanager.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,19 @@ def test_set_text_charset_latin_1(self):
342342
self.assertEqual(m.get_payload(decode=True).decode('utf-8'), content)
343343
self.assertEqual(m.get_content(), content)
344344

345+
def test_set_text_charset_cp949(self):
346+
m = self._make_message()
347+
content = "\ud55c\uad6d\uc5b4\n\uac02\n"
348+
raw_data_manager.set_content(m, content, charset='cp949')
349+
self.assertEqual(str(m), textwrap.dedent("""\
350+
Content-Type: text/plain; charset="euc-kr"
351+
Content-Transfer-Encoding: base64
352+
353+
x9Gxub7uCqTUpKGkv6SiCg==
354+
"""))
355+
self.assertEqual(m.get_payload(decode=True).decode('euc-kr'), content)
356+
self.assertEqual(m.get_content(), content)
357+
345358
def test_set_text_plain_long_line_heuristics(self):
346359
m = self._make_message()
347360
content = ("Simple but long message that is over 78 characters"

Lib/test/test_email/test_email.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5079,15 +5079,16 @@ def test_user_charsets(self):
50795079
self.assertEqual(c.output_codec, 'fake0')
50805080

50815081
charset.add_alias('fake1', 'mime-fake')
5082+
charset.add_alias('output-mime-fake', 'output-mime-fake-alias')
50825083
charset.add_codec('mime-fake', 'fakecodec')
5083-
charset.add_codec('output-mime-fake', 'outputfakecodec')
5084+
charset.add_codec('output-mime-fake-alias', 'outputfakecodec')
50845085
charset.add_charset('mime-fake', charset.QP, None, 'output-mime-fake')
50855086

50865087
c = Charset('fake1')
50875088
self.assertEqual(c.input_charset, 'mime-fake')
50885089
self.assertEqual(c.header_encoding, charset.QP)
50895090
self.assertEqual(c.body_encoding, None)
5090-
self.assertEqual(c.output_charset, 'output-mime-fake')
5091+
self.assertEqual(c.output_charset, 'output-mime-fake-alias')
50915092
self.assertEqual(c.input_codec, 'fakecodec')
50925093
self.assertEqual(c.output_codec, 'outputfakecodec')
50935094

0 commit comments

Comments
 (0)