How to use UTF-8 encoding in .NET LDAP queries
If you are using System.DirectoryServices.Protocols
in .NET to query LDAP directories, you may encounter strange replacement characters like �
in your results containing special characters,
especially when deploying on Linux environments.
This is due to the default LDAP protocol version is 2. Microsoft added support for UTF-8 encoded string attributes in LDAP version 3 (see here).
An easy fix to this is setting the protocol version for LdapConnection
to 3 like here:
//omitted for brevity
var connection = new LdapConnection(ldapDirectoryIdentifier, credentials)
{
SessionOptions = { ProtocolVersion = 3 }
}
After that you will get correctly encoded LDAP attributes which contain special latin characters like german umlauts.
I hope this little guide helped you. Happy coding 🥳