Oops!  Of course, Tim is right -- when the item is not a hex number,
the '%' should be put back in.
diff --git a/Lib/urllib.py b/Lib/urllib.py
index ecf5057..d294c4e 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -867,9 +867,9 @@
 				myappend(mychr(myatoi(item[:2], 16))
 					 + item[2:])
 			except:
-				myappend(item)
+				myappend('%' + item)
 		else:
-			myappend(item)
+			myappend('%' + item)
 	return string.join(res, "")
 
 def unquote_plus(s):