Java 如果DifferencedName有引号,则无法从组中获取成员

Java 如果DifferencedName有引号,则无法从组中获取成员,java,active-directory,ldap,jndi,Java,Active Directory,Ldap,Jndi,我正在使用LdapContext查询我的Active Directory。无法从组中获得该成员: 但是,如果成员dn没有引号-一切正常 稍后添加: 我尝试使用VBScript进行如下查询: Dim userDn userDn = "CN=Петров Иван Сидорович,OU=Отдел сбыта,OU=Здание \""Северное\"",OU=Филиал Кааап-Рег,DC=sub,DC=domain,DC=com" 并且查询成功完成 要在vbs字符串中添加双引号

我正在使用LdapContext查询我的Active Directory。无法从组中获得该成员:

但是,如果成员dn没有引号-一切正常

稍后添加:

我尝试使用VBScript进行如下查询:

Dim userDn
userDn = "CN=Петров Иван Сидорович,OU=Отдел сбыта,OU=Здание \""Северное\"",OU=Филиал Кааап-Рег,DC=sub,DC=domain,DC=com"
并且查询成功完成

要在vbs字符串中添加双引号,应添加两次


有什么想法吗?

这不是答案,但

一旦你有了active directory,你能从你的广告中删除所有西里尔字母符号吗?如果出现故障,您将如何深入了解恢复过程

第二。你到底需要在你的名字里引用什么?你读过微软推荐书吗

答案似乎是——试着删除你在你名字中的引语


仔细阅读微软关于广告基础设施和OU/CN命名的建议。

我找到了我问题的答案

因此,如果您的DifferentiedName有双引号或加号或其他不好的字符,您应该使用

package javax.naming.ldap;
Rdn.escapeValue(yourDn);

实际上,我们应该始终使用它。

编码不匹配的问题ldap使用utf8西里尔字母ad使用cp1251尝试像使用新字符串一样使用重新编码;
package javax.naming.ldap;
Rdn.escapeValue(yourDn);