日本語サポート
DNや属性値に日本語を含む文字列を指定することができます。本ライブラリでは、DNや属性値に日本語を含む文字列を指定する場合、UTF-8形式に変換する必要があります。本ライブラリでは、UTF-8形式に変換するために、以下の関数を提供しています。
日本語を含まない文字列(すべてのコードが0xFF以下)の場合は、UTF-8に変換しても、もとのデータと同じものが出力されます。
関数名 | 関数の説明 |
---|---|
日本語を含む文字列を変換規則に従ってコード変換します。 | |
日本語を含む文字列を変換規則に従ってコード変換します。 | |
ldap_conv_utf2()の初期化をします。 | |
ldap_conv_utf2()の後処理をします。 |
未定義文字に対してコード変換をした場合、変換元コードに対応する変換先コードが存在しない場合は、変換先コードの"_"(アンダースコア)に変更します。(マルチバイトコードの場合は"_"になります。)
名前
ldap_conv_utf
形式
#include "idldap.h" int ldap_conv_utf( char *input, char **output, int in, int out );
機能説明
この関数は、以下の変換規則に従ってコード変換をします。
Shift JIS → UTF-8
UTF-8 → Shift JIS
ISO-8859-1 → UTF-8
UTF-8 → ISO-8859-1
Unicode(UCS2) → UTF-8
UTF-8 → Unicode(UCS2)
EUC → UTF-8
UTF-8 → EUC
Unicode(UCS2)は、ビッグエンディアンとして処理します。
Unicode(UCS2)は、リトルエンディアンとして処理します。
パラメタ
入力データのアドレスを指定します。
出力データのアドレスを設定するための、ポインタ変数のアドレスを指定します。
inには、入力データのコード種別を指定します。outには、出力データのコード種別を指定します。inパラメタとoutパラメタのどちらか一方は、UTF-8を指定する必要があります。
コード変換の種類に応じて以下の値を指定します。
コード変換の種類 | 指定するパラメタ | |
---|---|---|
in | out | |
Shift JIS → UTF-8 | LDAP_CHARS_OPT_SJIS | LDAP_CHARS_OPT_UTF8 |
ISO-8859-1 → UTF-8 | LDAP_CHARS_OPT_88591 | LDAP_CHARS_OPT_UTF8 |
Unicode(UCS2) → UTF-8 | LDAP_CHARS_OPT_UCS2 | LDAP_CHARS_OPT_UTF8 |
UTF-8 → Shift JIS | LDAP_CHARS_OPT_UTF8 | LDAP_CHARS_OPT_SJIS |
UTF-8 → ISO-8859-1 | LDAP_CHARS_OPT_UTF8 | LDAP_CHARS_OPT_88591 |
UTF-8 → Unicode(UCS2) | LDAP_CHARS_OPT_UTF8 | LDAP_CHARS_OPT_UCS2 |
EUC → UTF-8 | LDAP_CHARS_OPT_EUCJP | LDAP_CHARS_OPT_UTF8 |
UTF-8 → EUC | LDAP_CHARS_OPT_UTF8 | LDAP_CHARS_OPT_EUCJP |
復帰値
この関数は、復帰値として以下に示す値を返します。
正常終了 : 出力データのサイズ(バイト数)
異常終了 : 0
正常終了の場合には、outputパラメタで指定されたポインタ変数に、出力データのアドレスが設定されています。
異常終了の場合には、outputパラメタで指定されたポインタ変数に、NULLが設定されています。エラーの詳細は、Solaris、Linuxではerrnoを参照してください。Windows(R)ではSystem Errorsを参照してください。Sytem ErrorsはGetLastError()で参照することができます。
System Errors | errno | 意味 |
---|---|---|
ERROR_INVALID_PARAMETER | EINVAL | パラメタの指定に誤りがあります。 |
ERROR_NOT_ENOUGH_MEMORY | ENOMEM | メモリ不足が発生しました。 |
ERROR_NO_UNICODE_TRANSLATION | EILSEQ | 指定されたコードには不当な文字コードが含まれています。 |
ERROR_INSUFFICIENT_BUFFER | E2BIG | 指定されたデータの形式が違います。 |
- | ENOENT | ライブラリのロードに失敗しました。 |
注意事項
動的メモリの解放
ldap_conv_utf()で通知された領域は、不要になった時点でldap_memfree()を使用して解放しなければなりません。詳細は、“1.20.13 動的メモリの解放インタフェース”を参照してください。
名前
ldap_conv_utf2
形式
#include "idldap.h" int ldap_conv_utf2( ldap_conv_func *lcfp, char *input, char **output, int in, int out );
機能説明
この関数は、以下の変換規則に従ってコード変換をします。
Shift JIS → UTF-8
UTF-8 → Shift JIS
ISO-8859-1 → UTF-8
UTF-8 → ISO-8859-1
Unicode(UCS2) → UTF-8
UTF-8 → Unicode(UCS2)
EUC → UTF-8
UTF-8 → EUC
Unicode(UCS2)は、ビッグエンディアンとして処理します。
Unicode(UCS2)は、リトルエンディアンとして処理します。
また、この関数は、ldap_conv_utf()と同等の機能/性能をもち、Solaris版、およびLinux版ldap_conv_utf2()とのインタフェース互換を維持する目的で使用します。
また、この関数は、ldap_conv_utf()機能を分割することにより、性能向上を図っています。
パラメタ
ldap_conv_init()で獲得されたコード変換ハンドルのアドレスを指定します。
入力データのアドレスを指定します。
出力データのアドレスを設定するための、ポインタ変数のアドレスを指定します。
inには、入力データのコード種別を指定します。outには、出力データのコード種別を指定します。inパラメタとoutパラメタのどちらか一方は、UTF-8を指定する必要があります。
コード変換の種類に応じて以下の値を指定します。
コード変換の種類 | 指定するパラメタ | |
---|---|---|
in | out | |
Shift JIS → UTF-8 | LDAP_CHARS_OPT_SJIS | LDAP_CHARS_OPT_UTF8 |
ISO-8859-1 → UTF-8 | LDAP_CHARS_OPT_88591 | LDAP_CHARS_OPT_UTF8 |
Unicode(UCS2) → UTF-8 | LDAP_CHARS_OPT_UCS2 | LDAP_CHARS_OPT_UTF8 |
UTF-8 → Shift JIS | LDAP_CHARS_OPT_UTF8 | LDAP_CHARS_OPT_SJIS |
UTF-8 → ISO-8859-1 | LDAP_CHARS_OPT_UTF8 | LDAP_CHARS_OPT_88591 |
UTF-8 → Unicode(UCS2) | LDAP_CHARS_OPT_UTF8 | LDAP_CHARS_OPT_UCS2 |
EUC → UTF-8 | LDAP_CHARS_OPT_EUCJP | LDAP_CHARS_OPT_UTF8 |
UTF-8 → EUC | LDAP_CHARS_OPT_UTF8 | LDAP_CHARS_OPT_EUCJP |
復帰値
この関数は、復帰値として以下に示す値を返します。
正常終了 : 出力データのサイズ(バイト数)
異常終了 : 0
正常終了の場合には、outputパラメタで指定されたポインタ変数に、出力データのアドレスが設定されています。
異常終了の場合には、outputパラメタで指定されたポインタ変数に、NULLが設定されています。エラーの詳細は、Solaris、Linuxではerrnoを参照してください。Windows(R)ではSystem Errorsを参照してください。System ErrorsはGetLastError()で参照することができます。
System Errors | errno | 意味 |
---|---|---|
ERROR_INVALID_PARAMETER | EINVAL | パラメタの指定に誤りがあります。 |
ERROR_NOT_ENOUGH_MEMORY | ENOMEM | メモリ不足が発生しました。 |
ERROR_NO_UNICODE_TRANSLATION | EILSEQ | 指定されたコードには不当な文字コードが含まれています。 |
ERROR_INSUFFICIENT_BUFFER | E2BIG | 指定されたデータの形式が違います。 |
- | ENOENT | ライブラリのロードに失敗しました。 |
注意事項
動的メモリの解放
ldap_conv_utf2()で通知された領域は、不要になった時点でldap_memfree()を使用して解放しなければなりません。詳細は、“1.20.13 動的メモリの解放インタフェース”を参照してください。
名前
ldap_conv_init
形式
#include "idldap.h" ldap_conv_func *ldap_conv_init( int code );
機能説明
この関数は、ldap_conv_utf2()関数の初期化処理をします。変換したい文字コードを指定することにより、UTF-8と指定した文字コードとの間で変換ができるようになります。
Unicode(UCS2)は、ビッグエンディアンとして処理します。
Unicode(UCS2)は、リトルエンディアンとして処理します。
パラメタ
ldap_conv_utf2()で指定するinパラメタ、およびoutパラメタの、UTF-8でない方のコード種別を指定します。
LDAP_CHARS_OPT_SJIS : Shift JIS
LDAP_CHARS_OPT_88591 : ISO-8859-1
LDAP_CHARS_OPT_UCS2 : Unicode(UCS2)
LDAP_CHARS_OPT_EUCJP : EUC
復帰値
この関数は、復帰値として以下に示す値を返します。
正常終了 : -1
異常終了 : なし
Windows(R)版のこの関数は、Solaris版、およびLinux版と互換性を保つためにあります。そのため、必ず正常終了します。
正常終了 : コード変換ハンドルのポインタ
異常終了 : NULL
エラーの詳細は、errnoを参照してください。
errno | 意味 |
---|---|
EINVAL | パラメタの指定に誤りがあります。 |
ENOMEM | メモリ不足が発生しました。 |
ENOENT | ライブラリのロードに失敗しました。 |
注意事項
コード変換ハンドルの解放
ldap_conv_init()で獲得されたコード変換ハンドルの領域は、不要になった時点でldap_conv_close()を使用して解放しなければなりません。
名前
ldap_conv_close
形式
#include "idldap.h" int ldap_conv_close( ldap_conv_func *lcfp, int arg );
機能説明
この関数は、ldap_conv_utf2()関数の後処理をします。
パラメタ
ldap_conv_init()で獲得されたコード変換ハンドルのアドレスを指定します。
ldap_conv_init()で指定したコード種別を指定します。(将来の拡張用のため本バージョンでは有効になりません。)
復帰値
この関数は、復帰値として以下に示す値を返します。
正常終了 : 0
異常終了 : なし
Windows(R)版のこの関数は、Solaris版、およびLinux版との互換のためだけにあります。そのため、必ず正常終了します。
正常終了 : 0
異常終了 : -1
エラーの詳細は、errnoを参照してください。
errno | 意味 |
---|---|
EINVAL | パラメタの指定に誤りがあります。 |
EBADF | コード変換ハンドルが正しくありません。 |