我正在尝试使用 python 在 OpenLDAP 中插入用户。问题是,当用户使用 ç、é、è 等重音字母时,python 反应不佳并将 OpenLDAP 编码的值插入 base64:
这是我的版本的python代码(插入同样的问题,但在这里更容易):
def edit(self, uid, item, value):
mod_attrs = [ (ldap.MOD_REPLACE, item, value) ]
try:
LDAPEntry.connect(self).modify_s('uid='+uid+','+USER_BASE_DN, mod_attrs)
except ldap.LDAPError, e:
print e
当我插入打印值时,我得到例如:
François Dujardin
在 LDAP 中,使用 ldapsearch,我得到:
cn:: U3TFzJFkISD1kdfv1eQ==
而使用 ldif 文件和 ldapadd -f my_file.ldif 给了我适当的结果。
我认为我的脚本编码存在问题,它没有以适当的格式提供 OpenLDAP 数据。但我不知道如何解决它。我努力了:
value = value.decode('unicode_escape').encode('utf-8')
或者
value = value.decode('unicode_escape').encode('iso-8859-1')
并获得不同的 base64 编码值,但不是合适的值:/
谁能帮我解决这个问题?
非常感谢!