diff options
author | Alexandre Vassalotti <alexandre@peadrop.com> | 2009-07-22 02:32:34 (GMT) |
---|---|---|
committer | Alexandre Vassalotti <alexandre@peadrop.com> | 2009-07-22 02:32:34 (GMT) |
commit | e671fd206b1fe31fdad7a9ec570fffe390ec56ee (patch) | |
tree | ad070ca6586b09e982c124e797edd7bbc99e9e65 /Lib/xmlrpc | |
parent | fc477048e1dee78a1b4376584cac052be1b4752d (diff) | |
download | cpython-e671fd206b1fe31fdad7a9ec570fffe390ec56ee.zip cpython-e671fd206b1fe31fdad7a9ec570fffe390ec56ee.tar.gz cpython-e671fd206b1fe31fdad7a9ec570fffe390ec56ee.tar.bz2 |
Issue #6360: Simplify string decoding in xmlrpc.client.
Diffstat (limited to 'Lib/xmlrpc')
-rw-r--r-- | Lib/xmlrpc/client.py | 21 |
1 files changed, 4 insertions, 17 deletions
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 @@ try: 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("<", "<") return s.replace(">", ">",) -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 @@ class Unmarshaller: 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 @@ class Unmarshaller: 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 @@ class Unmarshaller: 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 |