You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
xml.sax.saxutils.escape does not escapes \x00 #57857
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2012-06-20.19:56:12.020>created_at=<Date2011-12-22.14:49:17.023>labels= ['expert-XML', 'type-bug']
title='xml.sax.saxutils.escape does not escapes \\x00'updated_at=<Date2012-06-20.19:56:12.019>user='https://bugs.python.org/animus'
This is correct behavior. \x00 is not supported in XML:
not in raw form, and not in escaped form
last sentence in forth paragraph of section 1.3 in XML 1.1 specification says following:
======
Due to potential problems with APIs,
#x0 is still forbidden both directly and as a character reference.
======
And, second sentence in paragraph 2 in subsection 'Validity constraint: Notation Declared' of section 4.2.2 says following:
======
The characters to be escaped are the control characters #x0 to #x1F and #x7F (most of which cannot appear in XML), space #x20, the delimiters '<' #x3C, '>' #x3E and '"' #x22, the unwise characters '{' #x7B, '}' #x7D, '|' #x7C, '\' #x5C, '^' #x5E and '`' #x60, as well as all characters above #x7F.
======
What am I trying to say is: if those characters are forbidden, then maybe they need to be escaped rather than ignored?
loewis commented on Jun 20, 2012
loewismannequin
Mannequin
More actions
The characters are forbidden both in raw form *and* in escaped form. So even if they get escaped, they *still* will lead to errors. So there is no point in escaping them.
Activity
animus commentedon Dec 22, 2011
function xml.sax.saxutils.escape('\x00qweqwe<') returns '\x00qweqwe<'
\x00 did not escaped to �
is this is a correct behavior?
this is influences tools like xmpppy, which sends \x00 not encoded and leads to xmpp error.
animus commentedon Dec 22, 2011
sorry, xmpppy uses it's own escape method, but anyway... :)
loewis commentedon Dec 23, 2011
This is correct behavior. \x00 is not supported in XML: not in raw form, and not in escaped form. To transmit binary data in XML, use base64.
animus commentedon Jun 20, 2012
last sentence in forth paragraph of section 1.3 in XML 1.1 specification says following:
======
Due to potential problems with APIs,
#x0 is still forbidden both directly and as a character reference.
======
And, second sentence in paragraph 2 in subsection 'Validity constraint: Notation Declared' of section 4.2.2 says following:
======
The characters to be escaped are the control characters #x0 to #x1F and #x7F (most of which cannot appear in XML), space #x20, the delimiters '<' #x3C, '>' #x3E and '"' #x22, the unwise characters '{' #x7B, '}' #x7D, '|' #x7C, '\' #x5C, '^' #x5E and '`' #x60, as well as all characters above #x7F.
======
(xml 1.1) http://www.w3.org/TR/2006/REC-xml11-20060816/
(xml 1.0) http://www.w3.org/TR/2008/REC-xml-20081126/
animus commentedon Jun 20, 2012
What am I trying to say is: if those characters are forbidden, then maybe they need to be escaped rather than ignored?
loewis commentedon Jun 20, 2012
The characters are forbidden both in raw form *and* in escaped form. So even if they get escaped, they *still* will lead to errors. So there is no point in escaping them.