を経由して、Active Directoryから文字列をエンコードされたUnicodeでの作業、私はすでにこの問題を思い付いたが、私はいくつかのより具体的なに関する情報を使用して新しい質問を作成することを決めたいくつかのテストの後:の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)
第1の実施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
編集:追加のrepr(複数可)に関する情報
私はUbuntuマシンでテストしています。 print repr(fullentries [23] [1])の出力はu'M \\ xc3 \\ xbcller '、印刷repr(testentry)は' M \ xc3 \ xbcller 'を出力します。編集:上記の情報を追加しました – Raptor
ありがとう!あなたのアップデートは本当に機能し、あなたは私の週末を救いました;)。これは私がADから抜け出すthumbnailPhoto属性では機能しませんが、私はその回避策を見つけることができると思います。すべての純粋なテキスト文字列は今、完璧に見えます。 :) – Raptor