【问题标题】:Using ldapsearch with accented characters使用带有重音字符的 ldapsearch
【发布时间】:2016-09-21 11:29:36
【问题描述】:

我正在使用ldapsearch 命令查询 OpenLDAP 服务器,虽然在大多数情况下都能正常工作,但对于西班牙语或法语等语言中的特殊字符并不是很聪明。

我的意思是,如果我执行查询:

ldapsearch -h myhost "givenName=Ramón"

它会输出姓名为Ramón 的人,但不会输出姓名为Ramon 的人(为了避免特殊字符出现问题,这种情况非常频繁)。我可以很聪明,只需执行以下查询:

ldapsearch -h myhost "givenName=Ram*n"

它工作正常,输出所有可能的变化,但我想知道是否有某种方法可以告诉 ldapsearch 在搜索中只包含重音版本的字符,所以搜索 Ramon 包括 Ramon 和 @987654328 @ 结果。现在大多数搜索引擎已经这样做了,所以也许有一种方法可以使用 LDAP。

提前致谢

【问题讨论】:

    标签: ldap non-ascii-characters


    【解决方案1】:

    你需要根据RFC 4515 String Representation of Search Filters转义字符串

    通常,您需要转义 RFC 4515 String Representation of Search Filters 中列出的项目,我建议您也可以转义任何非 UTF8 字符。

    我还找到了一些 methods that may be helpful 来帮助您入门。

    最后,退出吧。 开始填充搜索描述或其他一些非命名属性。 (任何不属于 DN 的属性)让您的 DN 永不改变。任何用户都不应该看到应该只是条目路径的 DN。如果您继续这种做法,您将遇到许多“现成”工具的问题。

    就返回“a”而不是“umlaut”(或类似的东西)而言。 好消息是 LDAP 是轻量级的,并且没有为程序员完成所有工作的所有花哨的功能。坏消息是一样的。

    LDAP 不提供任何此类功能来按您的意愿转换章程。

    【讨论】:

    • 我的问题并没有通过转义来解决,事实上我已经可以毫无问题地执行带有重音字符的搜索。我想要实现的是一个单一的搜索,让我们说一个包含字母'a'的单词,作为结果返回所有字母a的出现,还有那些a是重音/变音符号/其他的。现在 ldapsearch 不会发生这种情况,因为每个不同版本的 'a' 都有不同的 UTF-8 代码,因此 ldapsearch 将它们视为不同的字符,但是将一个字符的所有重音版本视为相同是大多数情况下的标准行为搜索引擎。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多