Hi, I'm having some trouble with unicode and vocabularies.
I've a utility with a List field: class MyUtility(Interface): mylist = List(title=_("My List"), value_type = TextLine(_("list item")), default = [], required = False) When the utility is created the list is populated from a unicode text file: datadir = os.path.join(os.path.dirname(__file__),'data') source_file = os.path.join(datadir, 'medium.dat') fp = codecs.open(source_file,"r",'utf-8') options = [] for line in fp.readlines(): options.append(line.strip()) util.medium = options fp.close() The file contains é (e-acute). I came to the above routine to fix a 'Wrong Type' error for the list. Now when I come to create a vocabulary from the list: class MyVocabulary(object): def __call__(self, context): utility = zapi.getUtility(IMyUtility) items = [item for item in utility.medium] return SimpleVocabulary.fromValues(items) It raises error ... File "/opt/zope/zope3/src/zope/schema/vocabulary.py", line 41, in __init__ self.token = str(token) UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 13: ordinal not in range(128)with vocabulary code: I can't figure out how to get the correct unicode value into the utility list and yet still have str(u'é') work when vocabulary factory is called. Best regards, Darryl _______________________________________________ Zope3-users mailing list Zope3-users@zope.org http://mail.zope.org/mailman/listinfo/zope3-users