Revert 1.170.  Add tests.
diff --git a/Lib/urllib.py b/Lib/urllib.py
index 113b828..a49b586 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -1110,9 +1110,12 @@
 def quote_plus(s, safe = ''):
     """Quote the query fragment of a URL; replacing ' ' with '+'"""
     if ' ' in s:
-        s = s.replace(' ', '+')
-        safe += '+'
-    return quote(s, safe)
+        l = s.split(' ')
+        for i in range(len(l)):
+            l[i] = quote(l[i], safe)
+        return '+'.join(l)
+    else:
+        return quote(s, safe)
 
 def urlencode(query,doseq=0):
     """Encode a sequence of two-element tuples or dictionary into a URL query string.