Skip to content

Commit e671fd2

Browse files
committed
Issue #6360: Simplify string decoding in xmlrpc.client.
1 parent fc47704 commit e671fd2

1 file changed

Lines changed: 4 additions & 17 deletions

File tree

Lib/xmlrpc/client.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -152,24 +152,11 @@
152152
except ImportError:
153153
datetime = None
154154

155-
def _decode(data, encoding, is8bit=re.compile("[\x80-\xff]").search):
156-
# decode non-ascii string (if possible)
157-
if encoding and is8bit(data):
158-
data = str(data, encoding)
159-
return data
160-
161155
def escape(s):
162156
s = s.replace("&", "&")
163157
s = s.replace("<", "&lt;")
164158
return s.replace(">", "&gt;",)
165159

166-
def _stringify(string):
167-
# convert to 7-bit ascii if possible
168-
try:
169-
return string.decode("ascii")
170-
except (UnicodeError, TypeError, AttributeError):
171-
return string
172-
173160
__version__ = "1.0.1"
174161

175162
# xmlrpc integer limits
@@ -755,8 +742,8 @@ def end_double(self, data):
755742

756743
def end_string(self, data):
757744
if self._encoding:
758-
data = _decode(data, self._encoding)
759-
self.append(_stringify(data))
745+
data = data.decode(self._encoding)
746+
self.append(data)
760747
self._value = 0
761748
dispatch["string"] = end_string
762749
dispatch["name"] = end_string # struct keys are always strings
@@ -774,7 +761,7 @@ def end_struct(self, data):
774761
dict = {}
775762
items = self._stack[mark:]
776763
for i in range(0, len(items), 2):
777-
dict[_stringify(items[i])] = items[i+1]
764+
dict[items[i]] = items[i+1]
778765
self._stack[mark:] = [dict]
779766
self._value = 0
780767
dispatch["struct"] = end_struct
@@ -811,7 +798,7 @@ def end_fault(self, data):
811798

812799
def end_methodName(self, data):
813800
if self._encoding:
814-
data = _decode(data, self._encoding)
801+
data = data.decode(self._encoding)
815802
self._methodname = data
816803
self._type = "methodName" # no params
817804
dispatch["methodName"] = end_methodName

0 commit comments

Comments
 (0)