我已经与这个问题提出了采用Unicode编码字符串的处理,但一些测试后,我决定创造一些更具体的相关信息了一个新问题:与从Active Directory通过Python-LDAP
我读使用者帐户python-ldap(和Python 2.7)来自我们的Active Directory。这确实很好,但我在特殊字符方面遇到问题。打印在控制台上时,它们看起来像UTF-8编码的字符串。目标是将它们写入MySQL DB,但我从一开始就没有将这些字符串转换为正确的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)
第一示例IST的输出:
M\xc3\xbcller
M\xc3\xbcller
u'M\\xc3\\xbcller'
编辑:如果我尝试.replace( '\\\\','\\)的OUTP更换双反斜线ut仍然是一样的。
第二个例子的输出:
Müller
M�ller
'M\xc3\xbcller'
有没有什么办法让AD输出正确编码?我已经阅读了很多文档,但是它都指出LDAPv3严格地为您提供了UTF-8编码的字符串。 Active Directory使用LDAPv3。
我的大问题,这个话题是在这里:Writing UTF-8 String to MySQL with Python
编辑:新增再版(S)的相关信息
我在Ubuntu机器上进行测试,仅供参考。印刷品repr(fullentries [23] [1])的输出是u'M \\ xc3 \\ xbcller',对于印刷品repr(testentry),它打印'M \ xc3 \ xbcller'编辑:添加了以上信息 – Raptor
谢谢!你的更新确实有效,你救了我的周末;)。这不适用于我退出AD的thumbnailPhoto属性,但我认为我们可以找到解决方法。所有纯文本字符串现在看起来完美。 :) – Raptor