"encoding specified in XML declaration is incorrect"

"Martin v. Löwis" martin at v.loewis.de
Thu Dec 2 22:20:14 CET 2004


Gustaf Liljegren wrote:
>     f.write(header + self.all + footer)
> UnicodeEncodeError: 'ascii' codec can't encode characters in position 
> 745-751: ordinal not in range(128)
> 
> The XML declaration should be enough to tell the encoding. 

Sure, but that does not help at all. self.all is a Unicode string;
information about its original encoding is not available anymore.
If you want to write self.all to f, you need to encode it explicitly,
e.g.

   f.write(header + self.all.encode("koi8-r") + footer)

Instead of koi8-r, you should use the enccoding of f, of course.

> u = unicode(s, "utf-8")
> xml.sax.parseString(u, MyParser())

This is not really supposed to work (yet). You need to pass
byte strings to xml.sax.parseString, not Unicode strings.

Regards,
Martin



More information about the Python-list mailing list