On Mon, 22 Oct 2007 07:55:49 -0400, Jean-Paul Calderone <[EMAIL PROTECTED]> 
wrote:
[snip]
How can I solve the encoding problem in the XMLRPC server response?

Help resolve #1909.  The patch attached to the ticket is at least missing
unit tests for the new functionality it provides.  If you can provide this,
then we might be able to add the feature and resolve the ticket

Actually, this is wrong, please disregard it. :)

#1909 is misguided and the attached patch is incorrect.  Specifying the
encoding parameter to xmlrpclib.dumps() doesn't do anything to solve the
problem here.

You either need to specify the encoding in the content-type header of the
response or you need to use UTF-8 (the default encoding for XML).  Of these,
you can already do the latter without changing anything in Twisted, since
xmlrpclib will emit UTF-8 if you pass it unicode instead of already encoded
strings.

So the solution to your problem is to return unicode in your result, instead
of already encoded strings.  These will be encoded to UTF-8, which will be
decoded properly by the client.

Compare:

 >>> from xml.dom.minidom import parseString
 >>> from xmlrpclib import dumps
 >>> parseString(dumps((u'fòò',)))
 <xml.dom.minidom.Document instance at 0xb7c0080c>

and

 >>> parseString(dumps((u'fòò'.encode('latin-1'),), encoding='latin-1'))
 Traceback (most recent call last):
   File "<stdin>", line 1, in ?
   File 
"/home/exarkun/.local/lib/python2.4/site-packages/_xmlplus/dom/minidom.py", 
line 1925, in parseString
     return expatbuilder.parseString(string)
   File 
"/home/exarkun/.local/lib/python2.4/site-packages/_xmlplus/dom/expatbuilder.py",
 line 942, in parseString
     return builder.parseString(string)
   File 
"/home/exarkun/.local/lib/python2.4/site-packages/_xmlplus/dom/expatbuilder.py",
 line 223, in parseString
     parser.Parse(string, True)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 3, column 16

Jean-Paul

_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to