as per discussion with antoine revert changes made in 83708 as the user useing ftplib's readline methods is supposed to always use a binary file
diff --git a/Lib/ftplib.py b/Lib/ftplib.py
index ada7475..b593fa1 100644
--- a/Lib/ftplib.py
+++ b/Lib/ftplib.py
@@ -493,15 +493,9 @@
         while 1:
             buf = fp.readline()
             if not buf: break
-            if isinstance(buf, str):
-                if not buf.endswith(CRLF):
-                    if buf[-1] in CRLF: buf = buf[:-1]
-                    buf = buf + CRLF
-                buf = bytes(buf, self.encoding)
-            else:
-                if not buf.endswith(B_CRLF):
-                    if buf[-1:] in B_CRLF: buf = buf[:-1]
-                    buf = buf + B_CRLF
+            if buf[-2:] != B_CRLF:
+                if buf[-1] in B_CRLF: buf = buf[:-1]
+                buf = buf + B_CRLF
             conn.sendall(buf)
             if callback: callback(buf)
         conn.close()
@@ -777,15 +771,9 @@
                 while 1:
                     buf = fp.readline()
                     if not buf: break
-                    if isinstance(buf, str):
-                        if not buf.endswith(CRLF):
-                            if buf[-1] in CRLF: buf = buf[:-1]
-                            buf = buf + CRLF
-                        buf = bytes(buf, self.encoding)
-                    else:
-                        if not buf.endswith(B_CRLF):
-                            if buf[-1:] in B_CRLF: buf = buf[:-1]
-                            buf = buf + B_CRLF
+                    if buf[-2:] != B_CRLF:
+                        if buf[-1] in B_CRLF: buf = buf[:-1]
+                        buf = buf + B_CRLF
                     conn.sendall(buf)
                     if callback: callback(buf)
                 # shutdown ssl layer
@@ -795,7 +783,6 @@
                 conn.close()
             return self.voidresp()
 
-
     __all__.append('FTP_TLS')
     all_errors = (Error, IOError, EOFError, ssl.SSLError)