none
DirectoryServices.Protocols.SearchRequest 的 LDAPFilter 字符编码使用本机 locale? RRS feed

  • 问题

  • .net 4.7.2,用以下代码连接 LDAP 服务器,并发送查询请求:

    using ldap as new DirectoryServices.Protocols.LdapConnection(...)

    ldap.SendRequest(New DirectoryServices.Protocols.SearchRequest("baseDN", "(givenName=中)", ...))

    ...

    end using

    查询字符串中的汉字被用本机代码页编码(936/GB2312 时为 D6 D0、932/Shift-JIS 时为 92 86),而 LDAP 服务器上的数据遵从 RFC4514、是 UTF-8 编码的 E4 B8 AD。

    问题:是否应统一使用 UTF-8 发送请求?这是否是 .net 的实现 bug?



    2020年9月29日 8:49

全部回复

  • Hi candy,

    经过我的搜索,我们在使用LDAP的字符串时,需要使用UTF-8的编码,LDAP SDK在对请求中使用的字符串进行编码时将自动使用UTF-8编码。

    你可以看看下面的链接,有相关人员进行了解释。

    How to support Chinese characters in search base

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年9月30日 9:19
    版主
  • 症状是 .net 没遵循 UTF-8 规则。
    2020年9月30日 9:40