Я уже столкнулся с этой проблемой, но после некоторого тестирования я решил создать новый вопрос с более конкретной информацией:
Я читаю учетные записи пользователей с помощью 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)
Вывод первого примера ist:
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.
Мой старый вопрос, тема которого здесь: Запись строки UTF-8 в MySQL с Python
Редактировать: Добавлена информация о репорте