NLS言語情報の取出し
OCIでの文字列操作
NLS 言語情報の取出しのサンプル・コード 言語情報の取出しのサンプル・コード 言語情報の取出しのサンプル・コード 言語情報の取出しのサンプル・コード
次に、情報を取り出してエラーをチェックする簡単な例を示します。
sword MyPrintLinguisticName(envhp, errhp) OCIEnv *envhp;
OCIError *errhp;
{
OraText infoBuf[OCI_NLS_MAXBUFSZ];
sword ret;
ret = OCINlsGetInfo(envhp, /* environment handle */
errhp, /* error handle */
infoBuf, /* destination buffer */
(size_t) OCI_NLS_MAXBUFSZ, /* buffer size */
(ub2) OCI_NLS_LINGUISTIC_NAME); /* item */
if (ret != OCI_SUCCESS) {
checkerr(errhp, ret, OCI_HTYPE_ERROR);
ret = OCI_ERROR;
} else {
printf("NLS linguistic: %s\n", infoBuf);
}
return(ret);
}
OCI での文字列操作 での文字列操作 での文字列操作 での文字列操作
文字列操作では、マルチバイト文字列とワイド・キャラクタ文字列の2種類のデータ構造が サポートされています。マルチバイト文字列は、Oracleのネイティブ・キャラクタ・セッ ト・エンコーディングを使用し、マルチバイト文字列を処理する関数は、その文字列を1つ の単位とみなします。ワイド・キャラクタ文字列のwchar関数は、文字列を柔軟に操作し、
文字ベースと文字列ベースの操作をサポートします。
ワイド・キャラクタのデータ型はOracle固有のデータ型です。ANSI/ISOのC規格で定義 されているwchar_tと混同しないでください。 Oracleのワイド・キャラクタは、すべての プラットフォームで常に4バイトですが、wchar_tは、実装とプラットフォームに依存し
ます。 Oracleのワイド・キャラクタは、マルチバイト・キャラクタを正規化し、簡単に処理
できるように固定幅エンコーディングにすることを目的としています。これによって、
Oracleのワイド・キャラクタ・セットとネイティブ・キャラクタ・セットの間のラウンドト
リップ変換が保証されます。
OCIでの文字列操作
文字列操作は、次のように分類できます。
■ マルチバイト・キャラクタとワイド・キャラクタ間の文字列の変換
■ 文字の分類
■ 大/小文字の変換
■ 表示長の計算
■ 比較、連結、検索などの一般的な文字列操作 表表表
表8-2 OCI文字列操作コール文字列操作コール文字列操作コール文字列操作コール 関数コール
関数コール関数コール
関数コール 説明説明説明説明
OCIMultiByteToWideChar() ヌル文字で終了する文字列全体をwchar書式に変換します。
OCIMultiByteInSizeTo WideChar()
文字列の一部をwchar書式に変換します。
OCIWideCharToMultiByte() ヌル文字で終了するワイド・キャラクタ文字列全体をマルチバイト文字列に変換
します。
OCIWideCharInSizeTo MultiByte()
ワイド・キャラクタ文字列の一部をマルチバイト書式に変換します。
OCIWideCharToLower() 指定されたロケールに大文字にマッピングされた文字がある場合は、そのワイ
ド・キャラクタを小文字で戻します。 大文字にマッピングされた文字がない場合 は、同じワイド・キャラクタを戻します。
OCIWideCharToUpper() 指定されたロケールに小文字にマッピングされた文字がある場合は、そのワイ
ド・キャラクタを大文字で戻します。小文字にマッピングされた文字がない場合 は、同じワイド・キャラクタを戻します。
OCIWideCharStrcmp() 2つのワイド・キャラクタ文字列を、バイナリ、言語または大/小文字を区別し
ない方法で比較します。
OCIWideCharStrncmp() OCIWideCharStrcmp()に類似しています。2つのワイド・キャラクタ文字列 を、バイナリ、言語または大/小文字を区別しない方法で比較しますが、str1 の先頭len1バイトとstr2の先頭len2バイトのみが比較されます。
OCIWideCharStrcat() wsrcstrで示された文字列のコピーを追加します。その後、結果文字列の文字数
を戻します。
OCIWideCharStrchr() wstrで示された文字列の中で、最初に出現するwcを検索します。 正常終了した
場合は、wcharへのポインタを戻します。
OCIWideCharStrcpy() wsrcstrで示されたwchar文字列をwdststrで示された配列にコピーします。
その後、コピーされた文字数を戻します。
OCIWideCharStrlen() wstrで示されたwchar文字列にある文字数を計算し、その数を戻します。
OCIWideCharStrncat() wsrcstrで示された文字列のコピーを追加します。 その後、結果文字列の文字数
を戻しますが、追加されるのは最大n文字までです。
OCIでの文字列操作
OCIWideCharStrncpy() wsrcstrで示されたwchar文字列をwdststrで示された配列にコピーします。
その後、コピーされた文字数を戻しますが、配列からコピーされるのは最大n文 字までです。
OCIWideCharStrrchr() wstrで示された文字列の中で、最後に出現するwcを検索します。
OCIWideCharStrCase Conversion()
wsrcstrで示されたワイド・キャラクタ文字列をフラグの指定により大文字また
は小文字に変換し、その結果をwdststrで示された配列にコピーします。
OCIWideCharDisplayLength ()
wcを表示するために必要な列位置の数を決定します。
OCIWideCharMultibyte Length()
wcをマルチバイト・エンコーディングで表す場合に必要なバイト数を決定しま す。
OCIMultiByteStrcmp() 2つのマルチバイト文字列を、バイナリ、言語または大/小文字を区別しない方
法で比較します。
OCIMultiByteStrncmp() 2つのマルチバイト文字列を、バイナリ、言語または大/小文字を区別しない方
法で比較しますが、str1の先頭len1バイトとstr2の先頭len2バイトのみが 比較されます。
OCIMultiByteStrcat() srcstrで示されたマルチバイト文字列のコピーを追加します。
OCIMultiByteStrcpy() srcstrで示されたマルチバイト文字列をdststrで示された配列にコピーしま す。その後、コピーされたバイト数を戻します。
OCIMultiByteStrlen() strで示されたマルチバイト文字列にあるバイト数を計算し、その数を戻します。
OCIMultiByteStrncat() srcstrで示されたマルチバイト文字列のコピーを追加しますが、srcstrから dststrにコピーされるのは最大n文字までです。
OCIMultiByteStrncpy() srcstrで示されたマルチバイト文字列をdststrで示された配列にコピーしま
す。 コピーされたバイト数を戻しますが、srcstrで示された配列からdststrで
示された配列にコピーされるのは、最大nバイトまでです。
OCIMultiByteStrnDisplay Length()
nバイトの範囲内のすべての文字が占有する表示位置の大きさを戻します。
OCIMultiByteStrCase Conversion()
文字列の一部をあるキャラクタ・セットから別のキャラクタ・セットに変換しま す。
表 表表
表8-2 OCI文字列操作コール文字列操作コール文字列操作コール文字列操作コール (続き)(続き)(続き)(続き)
関数コール 関数コール関数コール
関数コール 説明説明説明説明
OCIでの文字列操作