diff --git a/Doc/lib/libsimplexmlrpc.tex b/Doc/lib/libsimplexmlrpc.tex
index 4d179f6..ad8ccd4 100644
--- a/Doc/lib/libsimplexmlrpc.tex
+++ b/Doc/lib/libsimplexmlrpc.tex
@@ -14,24 +14,31 @@
 
 \begin{classdesc}{SimpleXMLRPCServer}{addr\optional{,
                                       requestHandler\optional{,
-					logRequests\optional{allow_none}}}}
+					logRequests\optional{allow_none\optional{, encoding}}}}}
 
-  Create a new server instance.  The \var{requestHandler} parameter
+  Create a new server instance.  This class
+  provides methods for registration of functions that can be called by
+  the XML-RPC protocol.  The \var{requestHandler} parameter
   should be a factory for request handler instances; it defaults to
   \class{SimpleXMLRPCRequestHandler}.  The \var{addr} and
   \var{requestHandler} parameters are passed to the
   \class{\refmodule{SocketServer}.TCPServer} constructor.  If
   \var{logRequests} is true (the default), requests will be logged;
-  setting this parameter to false will turn off logging.  This class
-  provides methods for registration of functions that can be called by
-  the XML-RPC protocol.
-  \versionchanged[The \var{allow_none} parameter was added]{2.5}
+  setting this parameter to false will turn off logging.  
+  The \var{allow_none} and \var{encoding} parameters are passed on to 
+  \module{xmlrpclib} and control the XML-RPC responses that will be returned 
+  from the server.
+  \versionchanged[The \var{allow_none} and \var{encoding} parameters were added]{2.5}
 \end{classdesc}
 
-\begin{classdesc}{CGIXMLRPCRequestHandler}{\optional{allow_none}}
+\begin{classdesc}{CGIXMLRPCRequestHandler}{\optional{allow_none\optional{, encoding}}}
   Create a new instance to handle XML-RPC requests in a CGI
-  environment. \versionadded{2.3}
-  \versionchanged[The \var{allow_none} parameter was added]{2.5}
+  environment. 
+  The \var{allow_none} and \var{encoding} parameters are passed on to 
+  \module{xmlrpclib} and control the XML-RPC responses that will be returned 
+  from the server.
+  \versionadded{2.3}
+  \versionchanged[The \var{allow_none} and \var{encoding} parameters were added]{2.5}
 \end{classdesc}
 
 \begin{classdesc}{SimpleXMLRPCRequestHandler}{}
diff --git a/Lib/SimpleXMLRPCServer.py b/Lib/SimpleXMLRPCServer.py
index 49b7f59..cdf1fb6 100644
--- a/Lib/SimpleXMLRPCServer.py
+++ b/Lib/SimpleXMLRPCServer.py
@@ -159,10 +159,11 @@
     reason to instantiate this class directly.
     """
 
-    def __init__(self, allow_none):
+    def __init__(self, allow_none, encoding):
         self.funcs = {}
         self.instance = None
         self.allow_none = allow_none
+        self.encoding = encoding
 
     def register_instance(self, instance, allow_dotted_names=False):
         """Registers an instance to respond to XML-RPC requests.
@@ -253,13 +254,15 @@
             # wrap response in a singleton tuple
             response = (response,)
             response = xmlrpclib.dumps(response, methodresponse=1, 
-                                       allow_none = self.allow_none)
+                                       allow_none=self.allow_none, encoding=self.encoding)
         except Fault, fault:
-            response = xmlrpclib.dumps(fault)
+            response = xmlrpclib.dumps(fault, allow_none=self.allow_none, 
+                                       encoding=self.encoding)
         except:
             # report exception back to server
             response = xmlrpclib.dumps(
-                xmlrpclib.Fault(1, "%s:%s" % (sys.exc_type, sys.exc_value))
+                xmlrpclib.Fault(1, "%s:%s" % (sys.exc_type, sys.exc_value)),
+                encoding=self.encoding, allow_none=self.allow_none,
                 )
 
         return response
@@ -481,10 +484,10 @@
     allow_reuse_address = True
 
     def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler,
-                 logRequests=True, allow_none=False):
+                 logRequests=True, allow_none=False, encoding=None):
         self.logRequests = logRequests
 
-        SimpleXMLRPCDispatcher.__init__(self, allow_none)
+        SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding)
         SocketServer.TCPServer.__init__(self, addr, requestHandler)
 
         # [Bug #1222790] If possible, set close-on-exec flag; if a 
@@ -498,8 +501,8 @@
 class CGIXMLRPCRequestHandler(SimpleXMLRPCDispatcher):
     """Simple handler for XML-RPC data passed through CGI."""
 
-    def __init__(self, allow_none=False):
-        SimpleXMLRPCDispatcher.__init__(self, allow_none)
+    def __init__(self, allow_none=False, encoding=None):
+        SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding)
 
     def handle_xmlrpc(self, request_text):
         """Handle a single XML-RPC request"""
diff --git a/Misc/NEWS b/Misc/NEWS
index bc8382e..7bc24dd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -454,7 +454,7 @@
 - Bug #792570: SimpleXMLRPCServer had problems if the request grew too large.
   Fixed by reading the HTTP body in chunks instead of one big socket.read().
 
-- Patch #893642: add allow_none argument to constructors of 
+- Patches #893642, #1039083: add allow_none, encoding arguments to constructors of 
   SimpleXMLRPCServer and CGIXMLRPCRequestHandler.
 
 - Bug #1110478: Revert os.environ.update to do putenv again.
