DN、および属性値には、記号や日本語を指定することができます。記号や日本語を、JNDIで記述するときの形式について説明します。
DNに、記号を指定する場合、以下の記号は特殊文字として扱われます。
「,」(カンマ)
「+」(プラス)
「"」(ダブル引用符)
「<」(小なり)
「>」(大なり)
「;」(セミコロン)
「#」(シャープ)(DNの先頭文字に指定する場合のみ)
「/」(スラッシュ)
特殊文字を指定するには、その特殊文字の前に「\」(エンマーク)を置いてエスケープするか、または「"」(ダブル引用符)で囲む必要があります。
エスケープが必要な記号を含むDNを指定する場合の例を以下に示します。
cn=a\b,o=Fujitsu, Inc.,c=jp
LDAP、JNDI、Java言語それぞれで、「\」(エンマーク(バックスラッシュ))文字を特殊文字と扱います。いくつか例を示します。
「\」を含むcn属性を指定するとします。
a\b
LDAPの規約により「\」をエスケープする必要があります。
cn=a\\b
JNDIの仕様により、この名前を指定するために、それぞれの「\」をエスケープする必要があります。
cn=a\\\\b
Java言語の仕様により、この名前を文字列リテラルとして指定するために、それぞれの「\」をエスケープする必要があります。
String name1 = "cn=a\\\\\\\\b";
同様に、「,」(カンマ)、「"」(ダブル引用符)の場合はそれぞれ次のようになります。
String name2 = "cn=a\\\\,b"; String name3 = "cn=a\\\\\"b";
最初の例をJNDIで使用する場合は、次のように記述します。
String name = "cn=a\\\\\\\\b,o=Fujitsu\\\\, Inc.,c=jp";
検索フィルタの値に、検索する値として記号を指定する場合、いくつかの記号は特殊文字として扱われます。特殊文字を指定するには、「\\」(エンマーク(バックスラッシュ))に続けて、特殊文字を記述します。
エスケープが必要な記号を以下に示します。
「*」(アスタリスク)
「(」(開き括弧)
「)」(閉じ括弧)
「\」(エンマーク)
検索フィルタ"o=富士通(株)"をJNDIで表現すると、以下のようになります。
"o=富士通\\(株\\)"
検索フィルタの詳細については、“7.1.2 検索フィルタ”を参照してください。
DNおよび属性値に日本語を含む文字列を指定することができます。エスケープやコード変換は不要です。