[issue7727] xmlrpc library returns string which contain null ( \x00 )
Serhiy Storchaka
report at bugs.python.org
Fri May 24 18:36:45 CEST 2013
Serhiy Storchaka added the comment:
Updating tests I found some related errors.
XML-RPC doesn't work in general case for non UTF-8 encoding:
>>> import xmlrpclib
>>> xmlrpclib.dumps(('\u20ac',), encoding='iso-8859-1')
'<params>\n<param>\n<value><string>\\u20ac</string></value>\n</param>\n</params>\n'
>>> xmlrpclib.dumps((u'\u20ac',), encoding='iso-8859-1')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/xmlrpclib.py", line 1085, in dumps
data = m.dumps(params)
File "/usr/lib/python2.7/xmlrpclib.py", line 632, in dumps
dump(v, write)
File "/usr/lib/python2.7/xmlrpclib.py", line 654, in __dump
f(self, value, write)
File "/usr/lib/python2.7/xmlrpclib.py", line 700, in dump_unicode
value = value.encode(self.encoding)
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u20ac' in position 0: ordinal not in range(256)
We should use 'xmlcharrefreplace' error handler.
Non-ASCII strings is passed as Unicode strings (this should be documented).
>>> xmlrpclib.loads(xmlrpclib.dumps(('\xe2\x82\xac',)))
((u'\u20ac',), None)
'\r' and '\r\n' are deserialized as '\n'.
>>> xmlrpclib.loads(xmlrpclib.dumps(('\r',)))
(('\n',), None)
>>> xmlrpclib.loads(xmlrpclib.dumps(('\r\n',)))
(('\n',), None)
----------
Added file: http://bugs.python.org/file30360/xmlrpc_dump_invalid_string-2.7_2.patch
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue7727>
_______________________________________
More information about the Python-bugs-list
mailing list