Issue #6360: Simplify string decoding in xmlrpc.client.
diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py
index 549006b..d9962aa 100644
--- a/Lib/xmlrpc/client.py
+++ b/Lib/xmlrpc/client.py
@@ -152,24 +152,11 @@
 except ImportError:
     datetime = None
 
-def _decode(data, encoding, is8bit=re.compile("[\x80-\xff]").search):
-    # decode non-ascii string (if possible)
-    if encoding and is8bit(data):
-        data = str(data, encoding)
-    return data
-
 def escape(s):
     s = s.replace("&", "&")
     s = s.replace("<", "&lt;")
     return s.replace(">", "&gt;",)
 
-def _stringify(string):
-    # convert to 7-bit ascii if possible
-    try:
-        return string.decode("ascii")
-    except (UnicodeError, TypeError, AttributeError):
-        return string
-
 __version__ = "1.0.1"
 
 # xmlrpc integer limits
@@ -755,8 +742,8 @@
 
     def end_string(self, data):
         if self._encoding:
-            data = _decode(data, self._encoding)
-        self.append(_stringify(data))
+            data = data.decode(self._encoding)
+        self.append(data)
         self._value = 0
     dispatch["string"] = end_string
     dispatch["name"] = end_string # struct keys are always strings
@@ -774,7 +761,7 @@
         dict = {}
         items = self._stack[mark:]
         for i in range(0, len(items), 2):
-            dict[_stringify(items[i])] = items[i+1]
+            dict[items[i]] = items[i+1]
         self._stack[mark:] = [dict]
         self._value = 0
     dispatch["struct"] = end_struct
@@ -811,7 +798,7 @@
 
     def end_methodName(self, data):
         if self._encoding:
-            data = _decode(data, self._encoding)
+            data = data.decode(self._encoding)
         self._methodname = data
         self._type = "methodName" # no params
     dispatch["methodName"] = end_methodName