New submission from Peter Gyorko <gyor...@balabit.hu>: If I add a string to the response, which contains non-printable characters, the output will not be parsed by the most of the XML parsers (I tried with XML-RPC for PHP).
Here is my quick and dirty fix: --- a/Lib/xmlrpclib.py +++ b/Lib/xmlrpclib.py @@ -165,9 +165,18 @@ def _decode(data, encoding, is8bit=re.compile("[\x80-\xff]").search): return data def escape(s, replace=string.replace): - s = replace(s, "&", "&") - s = replace(s, "<", "<") - return replace(s, ">", ">",) + res = '' + for char in s: + char_code = ord(char) + if (char_code < 32 and char_code not in (9, 10, 13)) or char_code > 126: + res += '\\x%02x' % ord(char) + else: + res += char + + res = replace(res, "&", "&") + res = replace(res, "<", "<") + res = replace(res, ">", ">") + return res if unicode: def _stringify(string): ---------- components: XML messages: 118376 nosy: gyorkop priority: normal severity: normal status: open title: xmlrpclib does not handle some non-printable characters properly type: behavior versions: Python 2.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue10066> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com