我已经遇到了这个问题,但在进行一些测试后,我决定提出一个新问题,并提供更多具体信息:
我正在使用python-ldap(和Python 2.7)从我们的Active Directory中读取用户帐户。这确实有效,但我遇到了特殊字符的问题。当在控制台上打印时,它们看起来像UTF-8编码的字符串。目标是将它们写入MySQL数据库,但我无法从一开始就将这些字符串转换为正确的UTF-8格式。
例如(fullentries是包含所有AD条目的数组):
手动插入字符串后的第二个测试如下所示:
第一个示例的输出结果是:
有没有办法正确编码AD输出?我已经阅读了很多文档,但它们都指出LDAPv3只提供UTF-8编码的字符串。Active Directory使用LDAPv3。
我之前在这个主题上发过一个问题:用Python将UTF-8字符串写入MySQL 编辑:添加了repr(s)信息
我正在使用python-ldap(和Python 2.7)从我们的Active Directory中读取用户帐户。这确实有效,但我遇到了特殊字符的问题。当在控制台上打印时,它们看起来像UTF-8编码的字符串。目标是将它们写入MySQL数据库,但我无法从一开始就将这些字符串转换为正确的UTF-8格式。
例如(fullentries是包含所有AD条目的数组):
fullentries[23][1].decode('utf-8', 'ignore')
print fullentries[23][1].encode('utf-8', 'ignore')
print fullentries[23][1].encode('latin1', 'ignore')
print repr(fullentries[23][1])
手动插入字符串后的第二个测试如下所示:
testentry = "M\xc3\xbcller"
testentry.decode('utf-8', 'ignore')
print testentry.encode('utf-8', 'ignore')
print testentry.encode('latin1', 'ignore')
print repr(testentry)
第一个示例的输出结果是:
M\xc3\xbcller
M\xc3\xbcller
u'M\\xc3\\xbcller'
编辑:如果我尝试用.replace('\\\\','\\)替换双反斜杠,输出结果仍然相同。
第二个示例的输出:
Müller
M�ller
'M\xc3\xbcller'
有没有办法正确编码AD输出?我已经阅读了很多文档,但它们都指出LDAPv3只提供UTF-8编码的字符串。Active Directory使用LDAPv3。
我之前在这个主题上发过一个问题:用Python将UTF-8字符串写入MySQL 编辑:添加了repr(s)信息