Serhiy Storchaka added the comment:
It is not working fine on Python 3.3.0.
>>> with codecs.open('/tmp/test.txt', 'w', encoding='iso-8859-1') as f:
... xml = XMLGenerator(f, encoding='iso-8859-1')
... xml.startDocument()
... xml.startElement('root', {'attr': u'\u20ac'})
... xml.endElement('root')
... xml.endDocument()
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
File "/home/serhiy/py/cpython-3.3.0/Lib/xml/sax/saxutils.py", line 141, in
startElement
self._write(' %s=%s' % (name, quoteattr(value)))
File "/home/serhiy/py/cpython-3.3.0/Lib/xml/sax/saxutils.py", line 96, in
_write
self._out.write(text)
File "/home/serhiy/py/cpython-3.3.0/Lib/codecs.py", line 699, in write
return self.writer.write(data)
File "/home/serhiy/py/cpython-3.3.0/Lib/codecs.py", line 355, in write
data, consumed = self.encode(object, self.errors)
UnicodeEncodeError: 'latin-1' codec can't encode character '\u20ac' in position
7: ordinal not in range(256)
And shouldn't. On Python 2 XMLGenerator works only with binary files and
"works" with text files only due implicit str->unicode converting. On Python 3
working with binary files was broken. Issue1470548 restores working with binary
file (for which only XMLGenerator can work correctly), but for backward
compatibility accepting of text files was left. The problem is that there no
trustworthy method to determine whenever a file-like object is binary or text.
Accepting of text streams in XMLGenerator should be deprecated in future
versions.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue17915>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com