diff -r 96a7603d25ea Lib/test/test_xmlrpc.py --- a/Lib/test/test_xmlrpc.py Mon Jan 18 19:40:23 2016 +0200 +++ b/Lib/test/test_xmlrpc.py Mon Jan 18 20:20:58 2016 +0200 @@ -184,17 +184,17 @@ class XMLRPCTestCase(unittest.TestCase): self.assertRaises(TypeError, xmlrpclib.dumps, (arg1,)) def test_dump_encoding(self): - value = '\u20ac' + value = '\u20ac\xa4' strg = xmlrpclib.dumps((value,), encoding='iso-8859-15') strg = "" + strg self.assertEqual(xmlrpclib.loads(strg)[0][0], value) - strg = strg.encode('iso-8859-15') + strg = strg.encode('iso-8859-15', 'xmlcharrefreplace') self.assertEqual(xmlrpclib.loads(strg)[0][0], value) strg = xmlrpclib.dumps((value,), encoding='iso-8859-15', methodresponse=True) self.assertEqual(xmlrpclib.loads(strg)[0][0], value) - strg = strg.encode('iso-8859-15') + strg = strg.encode('iso-8859-15', 'xmlcharrefreplace') self.assertEqual(xmlrpclib.loads(strg)[0][0], value) def test_dump_bytes(self): @@ -599,7 +599,7 @@ class SimpleServerTestCase(BaseServerTes def test_client_encoding(self): start_string = '\u20ac' - end_string = '\xa3' + end_string = '\xa4' try: p = xmlrpclib.ServerProxy(URL, encoding='iso-8859-15') @@ -767,7 +767,7 @@ class SimpleServerEncodingTestCase(BaseS def test_server_encoding(self): start_string = '\u20ac' - end_string = '\xa3' + end_string = '\xa4' try: p = xmlrpclib.ServerProxy(URL) diff -r 96a7603d25ea Lib/xmlrpc/client.py --- a/Lib/xmlrpc/client.py Mon Jan 18 19:40:23 2016 +0200 +++ b/Lib/xmlrpc/client.py Mon Jan 18 20:20:58 2016 +0200 @@ -955,8 +955,6 @@ def dumps(params, methodname=None, metho # standard XML-RPC wrappings if methodname: # a method call - if not isinstance(methodname, str): - methodname = methodname.encode(encoding) data = ( xmlheader, "\n" @@ -1422,7 +1420,7 @@ class ServerProxy: # call a method on the remote server request = dumps(params, methodname, encoding=self.__encoding, - allow_none=self.__allow_none).encode(self.__encoding) + allow_none=self.__allow_none).encode(self.__encoding, 'xmlcharrefreplace') response = self.__transport.request( self.__host, diff -r 96a7603d25ea Lib/xmlrpc/server.py --- a/Lib/xmlrpc/server.py Mon Jan 18 19:40:23 2016 +0200 +++ b/Lib/xmlrpc/server.py Mon Jan 18 20:20:58 2016 +0200 @@ -269,7 +269,7 @@ class SimpleXMLRPCDispatcher: encoding=self.encoding, allow_none=self.allow_none, ) - return response.encode(self.encoding) + return response.encode(self.encoding, 'xmlcharrefreplace') def system_listMethods(self): """system.listMethods() => ['add', 'subtract', 'multiple'] @@ -622,7 +622,7 @@ class MultiPathXMLRPCServer(SimpleXMLRPC response = dumps( Fault(1, "%s:%s" % (exc_type, exc_value)), encoding=self.encoding, allow_none=self.allow_none) - response = response.encode(self.encoding) + response = response.encode(self.encoding, 'xmlcharrefreplace') return response class CGIXMLRPCRequestHandler(SimpleXMLRPCDispatcher):