2016-05-24 59 views
1

我使用ldapsearch命令查詢OpenLDAP服務器,並同時努力對大多數用途,是不是很聰明,因爲在語言中像西班牙語或法語關於特殊字符。使用ldapsearch重音字符

我的意思是,如果我執行查詢:

ldapsearch -h myhost "givenName=Ramón"

它將輸出人,他們的名字是Ramón,但它不會輸出中那些名字輸入爲Ramon(這是相當頻繁爲了避免特殊字符的問題)。我可聰明瞭,只是執行查詢爲:

ldapsearch -h myhost "givenName=Ram*n"

並能正常工作,輸出所有可能的變化,但我不知道是否有某種方式來告訴ldapsearch的只是包括在字符的重音版本搜索,所以搜索Ramon包括RamonRamón結果。現在大多數搜索引擎已經這樣做了,所以也許有一種方法可以用LDAP來實現。

在此先感謝

回答

0

您需要根據RFC 4515 String Representation of Search Filters

逃避串一般情況下,你一定要逃逸RFC 4515 String Representation of Search Filters列出的項目,我會建議,也可以是任何非UTF8字符。

我也發現了一些methods that may be helpful讓你的開始。

最後,退出它。 開始填充說明或其他非命名屬性的搜索。 (任何不屬於DN的屬性)使您的DN永遠不會改變。沒有用戶應該看到只應該是條目路徑的DN。如果您繼續這種做法,您將遇到許多「即將擱置」工具的問題。

至於返回「一」而不是一個「變音」(或者類似的一些東西)。 好消息是LDAP是輕量級的,並沒有爲程序員完成所有工作的所有那些奇特的功能。壞消息是一樣的。

LDAP不提供任何這樣的能力,你的願望轉變章程。

+0

我的問題沒有通過轉義解決,實際上我已經可以用重音字符執行搜索而沒有問題。我想達到的目的是,單個搜索,比如說一個包含字母'a'的單詞,返回的結果是字母a的所有外觀,還有那些a是重音/混音/其他的。現在它不會發生在ldapsearch上,因爲每個不同版本的'a'都有不同的UTF-8代碼,因此ldapsearch將它們視爲不同的字符,但將大多數字符的所有重音版本視爲相同是大多數人的標準行爲搜索引擎。 – jesjimher