Newbie and encoding

jphthierry at free.fr jphthierry at free.fr
Mon Feb 19 09:08:43 CET 2007


Hi,

I was used to work with phpldapadmin, then discovered luma. Now I need something
more specific to my needs, and thus interested in python-ldap.

Starting was really easy :-) Unfortunately, I discovered a bug in my application
this week-end: I can not use 8 bits chars in search or add functions while I
have no issue with these characters in Luma :-( It seems to be related to string
encoding. Luma makes an intensive use of the "unicode" function. So I tried that
piece of code but without success:

>>> import ldap
>>> CON=ldap.open('localhost.localdomain')
>>> CON.simple_bind_s('','')
>>> CON.search_s('ou=amis,dc=localdomain',ldap.SCOPE_SUBTREE,u'(cn=thé*)')

exceptions.UnicodeEncodeError                        Traceback (most recent call
last)

/home/jpht/informatique/programmation/python/scripts/under_development/<console>

/usr/lib/python2.3/site-packages/ldap/ldapobject.py in search_s(self, base,
scope, filterstr, attrlist, attrsonly)
    466
    467   def
search_s(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
--> 468     return
self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,timeout=self.timeout)
    469
    470   def
search_st(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,timeout=-1):

/usr/lib/python2.3/site-packages/ldap/ldapobject.py in search_ext_s(self, base,
scope, filterstr, attrlist, attrsonly, serverctrls, clientctrls, timeout,
sizelimit)
    459
    460   def
search_ext_s(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
--> 461     msgid =
self._ldap_call(self._l.search_ext,base,scope,filterstr,attrlist,attrsonly,serverctrls,clientctrls,timeout,sizelimit)
    462     return self.result(msgid,all=1,timeout=timeout)[1]
    463

/usr/lib/python2.3/site-packages/ldap/ldapobject.py in _ldap_call(self, func,
*args, **kwargs)
     92     try:
     93       try:
---> 94         result = func(*args,**kwargs)
     95       finally:
     96         self._ldap_object_lock.release()

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 6:
ordinal not in range(128)

I went quickly through this list, but was not sure of understanding the answer
;-( Could someone help me?

Jean-Philippe

P.S.: I am running slapd 2.2.23 and python-ldap 2.0.4 (debian sarge)



More information about the python-ldap mailing list