我正在尝试使用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编码值,但不是合适的值:/
有人可以帮我解决这个问题吗?
非常感谢!
答案 0 :(得分:0)
确保您的内部代表权正确。 uid
应该是有效的unicode字符串。其次,您应该检查ldap服务器期望的编码。 utf-8,iso-8859-1,iso-8859-15,win1252,...除此之外,如果value
已经是unicode字符串,则之后不需要任何解码。