[Zope-dev] Catalog and Unicode

Florent Guillaume fg at nuxeo.com
Tue Aug 9 11:18:38 EDT 2005


We're seeing problems in one application here due to the catalog and  
interactions with Unicode. Here's what happens:

- an object is indexed with a Unicode title, so in the catalog the  
metadata tuple has for instance (u'cafe',)
- later that title is changed to latin-1, so the new metadata tuple  
would be ('caf\xe9',)

The problem is that Catalog.py has in updateMetadata() the code:

             if data.get(index, 0) != newDataRecord:
                 data[index] = newDataRecord

The simple comparison in the first line provokes a  
UnicodeDecodeError, you can reproduce by a simple:

     python -c "u'e' == '\xe9'"

This understandable, but in the case of the catalog really not  
helpful. I propose to change the code above to:

             try:
                 changed = data.get(index, 0) != newDataRecord
             except UnicodeDecodeError:
                 changed = True
            if changed:
                 data[index] = newDataRecord

Objections ?

Florent

-- 
Florent Guillaume, Nuxeo (Paris, France)   CTO, Director of R&D
+33 1 40 33 71 59   http://nuxeo.com   fg at nuxeo.com




More information about the Zope-Dev mailing list