[XML-SIG] [bug] Encoding troubles with attributes' CDATA, py1.5.2 + pyxml 0.6.6

Nicolas Chauvat Nicolas.Chauvat@logilab.fr
Thu, 30 Aug 2001 18:09:18 +0200 (CEST)


Hi List,

With python 1.5.2 and PyXml 0.6.6, I get problems when executing the
following piece of code :

>>> s = '<?xml version="1.0" encoding="ISO-8859-1"?><d nom="Détails de la
specialité" />'
>>> d = Sax2.FromXml(s)
>>> PrettyPrint(d,encoding='iso-8859-1')
<?xml version='1.0' encoding='iso-8859-1'?>
<!DOCTYPE d>
<d nomTraceback (innermost last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/__init__.py", line
82, in PrettyPrint
    Printer.PrintWalker(visitor, root).run()
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
384, in run
    return self.step()
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
380, in step
    self.visitor.visit(self.start_node)
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
186, in visit
    return self.visitDocument(node)
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
232, in visitDocument
    self.visitNodeList(node.childNodes, exclude=node.doctype)
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
202, in visitNodeList
    curr is not exclude and self.visit(curr)
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
162, in visit
    return self.visitElement(node)
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
266, in visitElement
    self.visitAttr(attr)
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
219, in visitAttr
    self._write("=%s%s%s" % (delimiter, text, delimiter))
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line
146, in _write
    obj = utf8_to_code(text, self.encoding)
  File "/usr/lib/python1.5/site-packages/xml/dom/ext/Printer.py", line 65,
in utf8_to_code
    text = ws.encode(encoding)
  File "/usr/lib/python1.5/site-packages/xml/unicode/iso8859.py", line 81,
in encode
    char, input = utf8_iso.utf8_to_code(codeset, input)
  File "/usr/lib/python1.5/site-packages/xml/unicode/utf8_iso.py", line
88, in utf8_to_code
    raise ConvertError("Unicode character %x not supported in
ISO-8859-%d"\
xml.unicode.utf8_iso.ConvertError: Unicode character 9d21 not supported in
ISO-8859-1

However, 

>>> s = '<?xml version="1.0" encoding="ISO-8859-1"?><d>Détails de la
specialité</d>'
>>> d = Sax2.FromXml(s)
>>> PrettyPrint(d,encoding='iso-8859-1')

works fine.

Please don't tell me to drop python 1.5.2 in favor of python 2.2 (that's a
leap!), for it has to run with Zope 2.3 and Python 1.5.2... for now.

I'll look into it, but any help will be appreciated :-)

-- 
Nicolas Chauvat

http://www.logilab.com - "Mais où est donc Ornicar ?" - LOGILAB, Paris (France)