Removed implicit convertions of str object to bytes from base64.
This also exposed some bugs in urlib2 and email.base64mime, which I
tried my best to fix. However, someone will probably have to double
check.
diff --git a/Lib/email/base64mime.py b/Lib/email/base64mime.py
index c60f8db..6db007d 100644
--- a/Lib/email/base64mime.py
+++ b/Lib/email/base64mime.py
@@ -66,9 +66,10 @@
charset names the character set to use to encode the header. It defaults
to iso-8859-1. Base64 encoding is defined in RFC 2045.
"""
- # Return empty headers unchanged
if not header_bytes:
- return str(header_bytes)
+ return ""
+ if isinstance(header_bytes, str):
+ header_bytes = header_bytes.encode(charset)
encoded = b64encode(header_bytes).decode("ascii")
return '=?%s?b?%s?=' % (charset, encoded)