diff --git a/Lib/email/base64mime.py b/Lib/email/base64mime.py
index 0319bbb..e309f30 100644
--- a/Lib/email/base64mime.py
+++ b/Lib/email/base64mime.py
@@ -109,7 +109,7 @@
     lines = []
     for line in base64ed:
         # Ignore the last character of each line if it is a newline
-        if line.endswith(NL):
+        if line[-1] == ord(NL):
             line = line[:-1]
         # Add the chrome
         lines.append('=?%s?b?%s?=' % (charset, line))
@@ -158,25 +158,19 @@
 
 
 
-def decode(s, convert_eols=False):
+def decode(string):
     """Decode a raw base64 string, returning a bytes object.
 
-    If convert_eols is set to a string value, all canonical email linefeeds,
-    e.g. "\\r\\n", in the decoded text will be converted to the value of
-    convert_eols.  os.linesep is a good choice for convert_eols if you are
-    decoding a text attachment.
-
-    This function does not parse a full MIME header value encoded with
-    base64 (like =?iso-8895-1?b?bmloISBuaWgh?=) -- please use the high
-    level email.Header class for that functionality.
+    This function does not parse a full MIME header value encoded with base64
+    (like =?iso-8895-1?b?bmloISBuaWgh?=) -- use the high level
+    email.Header class for that functionality.
     """
-    if not s:
-        return s
-
-    dec = a2b_base64(s)
-    if convert_eols:
-        return dec.replace(CRLF, convert_eols)
-    return dec
+    if not string:
+        return bytes()
+    elif isinstance(string, str):
+        return a2b_base64(string.encode('raw-unicode-escape'))
+    else:
+        return a2b_base64(string)
 
 
 # For convenience and backwards compatibility w/ standard base64 module
diff --git a/Lib/email/message.py b/Lib/email/message.py
index 539af90..ad795f9 100644
--- a/Lib/email/message.py
+++ b/Lib/email/message.py
@@ -201,7 +201,7 @@
                 # Incorrect padding
                 pass
         elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
-            in_file = BytesIO(bytes(payload + '\n'))
+            in_file = BytesIO((payload + '\n').encode('raw-unicode-escape'))
             out_file = BytesIO()
             try:
                 uu.decode(in_file, out_file, quiet=True)
@@ -757,7 +757,8 @@
                 # LookupError will be raised if the charset isn't known to
                 # Python.  UnicodeError will be raised if the encoded text
                 # contains a character not in the charset.
-                charset = str(bytes(charset[2]), pcharset)
+                as_bytes = charset[2].encode('raw-unicode-escape')
+                charset = str(as_bytes, pcharset)
             except (LookupError, UnicodeError):
                 charset = charset[2]
         # charset characters must be in us-ascii range
diff --git a/Lib/email/quoprimime.py b/Lib/email/quoprimime.py
index ce624d9..dfd3ccb 100644
--- a/Lib/email/quoprimime.py
+++ b/Lib/email/quoprimime.py
@@ -55,7 +55,10 @@
 # See also Charset.py
 MISC_LEN = 7
 
-HEADER_SAFE_BYTES = b'-!*+/ ' + bytes(ascii_letters) + bytes(digits)
+HEADER_SAFE_BYTES = (b'-!*+/ ' +
+                     ascii_letters.encode('raw-unicode-escape') +
+                     digits.encode('raw-unicode-escape'))
+
 BODY_SAFE_BYTES   = (b' !"#$%&\'()*+,-./0123456789:;<>'
                      b'?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`'
                      b'abcdefghijklmnopqrstuvwxyz{|}~\t')
diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
index fc8224a..981441c 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -2531,10 +2531,8 @@
 
     def test_decode(self):
         eq = self.assertEqual
-        eq(base64mime.decode(''), '')
+        eq(base64mime.decode(''), b'')
         eq(base64mime.decode('aGVsbG8='), b'hello')
-        eq(base64mime.decode('aGVsbG8=', 'X'), b'hello')
-        eq(base64mime.decode('aGVsbG8NCndvcmxk\n', 'X'), b'helloXworld')
 
     def test_encode(self):
         eq = self.assertEqual
@@ -2844,7 +2842,7 @@
     def test_empty_header_encode(self):
         h = Header()
         self.assertEqual(h.encode(), '')
-        
+
     def test_header_ctor_default_args(self):
         eq = self.ndiffAssertEqual
         h = Header()
