STINNER Victor added the comment: > Accepting of text streams in XMLGenerator should be deprecated in future > versions.
I agree that the following pattern is strange: with codecs.open('/tmp/test.txt', 'w', encoding='iso-8859-1') as f: xml = XMLGenerator(f, encoding='iso-8859-1') Why would I specify a codec twice? What happens if I specify two different codecs? with codecs.open('/tmp/test.txt', 'w', encoding='utf-8') as f: xml = XMLGenerator(f, encoding='iso-8859-1') It may be simpler (and safer?) to reject text files. If you cannot detect that f is a text file, just make it explicit in the documentation that f must be a binary file. 2013/5/7 Serhiy Storchaka <rep...@bugs.python.org>: > > 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 <rep...@bugs.python.org> > <http://bugs.python.org/issue17915> > _______________________________________ ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue17915> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com