mirror of
https://github.com/python/cpython.git
synced 2025-10-03 05:35:59 +00:00
#19957: Simplify encode_7or8bit now that _payload is always str.
Patch by Vajrasky Kok, test enhancement by me.
This commit is contained in:
parent
cd0cb8ccd3
commit
775632ba10
2 changed files with 12 additions and 14 deletions
|
@ -54,20 +54,11 @@ def encode_7or8bit(msg):
|
||||||
# There's no payload. For backwards compatibility we use 7bit
|
# There's no payload. For backwards compatibility we use 7bit
|
||||||
msg['Content-Transfer-Encoding'] = '7bit'
|
msg['Content-Transfer-Encoding'] = '7bit'
|
||||||
return
|
return
|
||||||
# We play a trick to make this go fast. If encoding/decode to ASCII
|
# We play a trick to make this go fast. If decoding from ASCII succeeds,
|
||||||
# succeeds, we know the data must be 7bit, otherwise treat it as 8bit.
|
# we know the data must be 7bit, otherwise treat it as 8bit.
|
||||||
try:
|
try:
|
||||||
if isinstance(orig, str):
|
|
||||||
orig.encode('ascii')
|
|
||||||
else:
|
|
||||||
orig.decode('ascii')
|
orig.decode('ascii')
|
||||||
except UnicodeError:
|
except UnicodeError:
|
||||||
charset = msg.get_charset()
|
|
||||||
output_cset = charset and charset.output_charset
|
|
||||||
# iso-2022-* is non-ASCII but encodes to a 7-bit representation
|
|
||||||
if output_cset and output_cset.lower().startswith('iso-2022-'):
|
|
||||||
msg['Content-Transfer-Encoding'] = '7bit'
|
|
||||||
else:
|
|
||||||
msg['Content-Transfer-Encoding'] = '8bit'
|
msg['Content-Transfer-Encoding'] = '8bit'
|
||||||
else:
|
else:
|
||||||
msg['Content-Transfer-Encoding'] = '7bit'
|
msg['Content-Transfer-Encoding'] = '7bit'
|
||||||
|
|
|
@ -765,8 +765,15 @@ class TestEncoders(unittest.TestCase):
|
||||||
# whose output character set is 7bit gets a transfer-encoding
|
# whose output character set is 7bit gets a transfer-encoding
|
||||||
# of 7bit.
|
# of 7bit.
|
||||||
eq = self.assertEqual
|
eq = self.assertEqual
|
||||||
msg = MIMEText('文', _charset='euc-jp')
|
msg = MIMEText('文\n', _charset='euc-jp')
|
||||||
eq(msg['content-transfer-encoding'], '7bit')
|
eq(msg['content-transfer-encoding'], '7bit')
|
||||||
|
eq(msg.as_string(), textwrap.dedent("""\
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset="iso-2022-jp"
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
|
||||||
|
\x1b$BJ8\x1b(B
|
||||||
|
"""))
|
||||||
|
|
||||||
def test_qp_encode_latin1(self):
|
def test_qp_encode_latin1(self):
|
||||||
msg = MIMEText('\xe1\xf6\n', 'text', 'ISO-8859-1')
|
msg = MIMEText('\xe1\xf6\n', 'text', 'ISO-8859-1')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue