Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの設定 » 国際言語と文字セット » SQL Anywhere のローカライズ版 » SQL Anywhere の国際化機能

 

ICU とは何か、いつ必要になるか

ICU (International Components for Unicode) は、IBM が開発および保守しているオープン・ソース・ライブラリです。ICU は、Unicode サポートを提供することによって、ソフトウェアの国際化を容易にします。SQL Anywhere は、ICU を使用して、特定の文字セット変換と照合オペレーションを実装しています。

データベース・サーバで ICU が必要になるとき (Windows Mobile を除くすべてのプラットフォーム)

データベース・サーバで常に ICU を利用できることが理想的です。次の表に、ICU が必要になるときとその理由を示します。

ICU が必要になるとき 説明
NCHAR 文字セットまたは CHAR 文字セットの照合として UCA が使用されている UCA は ICU を必要とします。
データベースの文字セットは UTF-8 でなく、マルチバイト文字セットである データベースの文字セットから UTF-8 にパスワード変換するために必要です (データベース・パスワードは内部的に UTF-8 で格納されています)。
クライアントとデータベースの文字セットが異なり、いずれかがマルチバイト (UTF-8 を含む) である。これには、Unicode ODBC、OLE DB、ADO.NET、および iAnywhere JDBC アプリケーションが含まれます。ICU のインストールされていないクライアントが使用するデータベース文字セットには関係ありません。 マルチバイト文字セットの適切な変換を行うためには ICU が必要です。
データベースの文字セットが UTF-8 でなく、CHAR と NCHAR 間の変換が必要である データベース・サーバは、UTF-8 を別の文字セットに変換するために ICU を必要とします。
Embedded SQL クライアントが UTF-8 以外の NCHAR 文字セットを使用する データベース・サーバは、UTF-8 を別の文字セットに変換するために ICU を必要とします。Embedded SQL クライアントのデフォルトの NCHAR 文字セットは、最初のクライアントの CHAR 文字セットと同じです。これは、db_change_nchar_charset 関数を使用して変更できます。db_change_nchar_charset 関数を参照してください。
CSCONVERT または SORTKEY 関数が使用されている。CSCONVERT 関数は、上記の 3 番目の項目要件に準ずる文字セットを変換するために呼び出されます。 上記の 3 番目の項目の場合、文字セットの変換には ICU が必要です。SORTKEY のラベル用に SORTKEY を生成するには UCA が必要であるため、結果として ICU が必要になります。CSCONVERT 関数 [文字列]SORTKEY 関数 [文字列]を参照してください。
データベース・サーバで ICU が必要になるとき (Windows Mobile)

次の表に、Windows Mobile で ICU が必要になるときとその理由を示します。

ICU が必要になるとき 説明
NCHAR 照合または CHAR 照合として UCA が使用されている UCA は ICU を必要とします。
SORTKEY 関数が使用されている SORTKEY のラベル用に SORTKEY を生成するには UCA が必要であるため、結果として ICU が必要になります。SORTKEY 関数 [文字列]を参照してください。
CHAR 文字セットが OS 文字セットに一致しない 文字セットが一致する場合であっても、NCHAR を使用しているとき、または CHAR 文字セットがマルチバイトであるときは、文字セット変換の処理を向上させるため、ICU の使用をおすすめします。
注意

ICU ライブラリをインストールしていない場合は、Windows Mobile の文字セットと一致する文字セットを使う照合を選択するか、データベースを作成するときに CHAR 照合として UTF8BIN 照合を選択することが必要です。また、データベースを作成するときに NCHAR 照合として UTF8BIN を選択することも必要になります。

データベース・サーバ上で ICU を使用しないで正しい文字セット変換を実行できるとき

データベースの文字セットとクライアントの文字セットの両方がシングルバイトであり、sqlany.cvf を利用できるとき (すべてのプラットフォーム)、またはオペレーティング・システムが変換をサポートするとき (Windows のみ) は、ICU を使用しないで正しい文字セット変換を行うことができます。これは、sqlany.cvf を利用できる場合、またはホストのオペレーティング・システムに適切な変換機能がインストールされている場合にかぎり、ICU を使用しなくてもシングルバイト間の変換が処理可能なためです。

クライアントで ICU が必要になるとき (Windows Mobile を除くすべてのプラットフォーム)

Unicode のクライアント・アプリケーションでは、使用するデータベースの文字セットにかかわらず、すべてのクライアントに ICU がインストールされている場合に、クライアントとデータベース・サーバ間のパフォーマンスが向上する可能性があります。これは、必要な変換処理の一部がデータベース・サーバからクライアントに渡されて、負荷が軽減するからです。

また、Windows プラットフォームで ODBC を使用している場合は、ANSI アプリケーションであっても、クライアントに ICU をインストールしておくことが必要です。これは、ドライバ・マネージャが ANSI ODBC 呼び出しを Unicode ODBC 呼び出しに変換するからです。