[Zope-CMF] Re: GenericSetup and unicode

yuppie y.2005- at wcm-solutions.de
Tue Dec 27 04:46:09 EST 2005


Hi Florent!


Florent Guillaume wrote:
> I have some iso-8859-15 strings that I want to export (I don't care 
> about the <?xml?> header encoding).
> 
> Today if I do
>   value = unicode(value, 'iso-8859-15')
>   child.setAttribute('value', value)
> I get an error on write:
> 
>   File "/Users/fg/zope/zope29/Products/GenericSetup/utils.py", line 685, 
> in exportObjects
>     exportObjects(sub, path+'/', context)
>   File "/Users/fg/zope/zope29/Products/GenericSetup/utils.py", line 681, 
> in exportObjects
>     context.writeDataFile(filename, body, exporter.mime_type)
>   File "/Users/fg/zope/zope29/Products/GenericSetup/context.py", line 
> 388, in writeDataFile
>     self._archive.addfile( info, stream )
>   File "/usr/local/lib/python2.4/tarfile.py", line 1302, in addfile
>     copyfileobj(fileobj, self.fileobj, tarinfo.size)
>   File "/usr/local/lib/python2.4/tarfile.py", line 173, in copyfileobj
>     dst.write(buf)
>   File "/usr/local/lib/python2.4/gzip.py", line 202, in write
>     self.crc = zlib.crc32(data, self.crc)
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in 
> position 297: ordinal not in range(128)
> 
> Is that expected? For now I convert to utf-8 instead of unicode, but it 
> feels like the writer should take care of that, no? Or is that a minidom 
> restriction?

1.) The configuration setup machinery is not tested with non-ascii 
values. AFAICS most sites that need non-English settings translate them 
on the fly. Feel free to extend the machinery if you need support for 
other encodings.

2.) Looks like toprettyxml has to be called with encoding='utf-8' to set 
the writer to utf-8 mode. But that also sets the encoding specified in 
the XML header. (Since utf-8 is the default we might want to suppress 
the second effect in PrettyDocument)


Cheers,

	Yuppie



More information about the Zope-CMF mailing list