JDBC ドライバーの国際化機能
SQL Server 用 Microsoft JDBC ドライバー の国際対応機能には、次の項目があります。
- SQL Server と同じ言語により完全にローカライズされたサービスをサポートします。
- ロケールに依存する SQL Server データに対する Java 言語変換をサポートします。
- オペレーティング システムに関係なく、世界中の言語に対応
- 世界中のドメイン名に対応 (Microsoft JDBC Driver 6.0 for SQL Server より)
文字データの処理
Java の文字データは、既定で Unicode として処理されます。Java String オブジェクトは Unicode 文字データを表します。 JDBC ドライバーにおいてこの規則の唯一の例外となるのは、ASCII ストリームの getter メソッドと setter メソッドです。暗黙の仮定で既知のコード ページの 1 つ (ASCII) によるバイト ストリームが使用されるため、これは特殊なケースです。
また、JDBC ドライバーには、sendStringParametersAsUnicode 接続文字列プロパティが用意されています。 このプロパティを使用して、文字データに対して準備されたパラメーターを Unicode ではなく ASCII またはマルチバイト文字セット (MBCS) で送信するように指定できます。 sendStringParametersAsUnicode 接続文字列プロパティについて詳しくは、「接続プロパティの設定」をご覧ください。
ドライバーの受信変換
サーバーから送られてきた Unicode テキスト データを、変換する必要はありません。 それは Unicode として直接渡されます。 サーバーから受信する Unicode 以外のデータは、データベースまたは列レベルでデータのコード ページから Unicode に変換されます。 これらの変換は、JDBC ドライバーによって Java 仮想マシン (JVM) 変換ルーチンを使用してを行われます。 変換は、型指定されたすべての文字列および文字ストリームのゲッター メソッドで行われます。
データベースのデータに対して適切なコード ページが JVM でサポートされていない場合、JDBC ドライバーから "コード ページ XXX は Java 環境ではサポートされていません" という例外がスローされます。 この問題を回避するには、その JVM でサポートする必要のある国際的な文字を完全にインストールする必要があります。
ドライバーの送信変換
ドライバーからサーバーへ送信される文字データは、ASCII または Unicode です。 たとえば、SQLServerPreparedStatement クラスと SQLServerCallableStatement クラスの setNString、setNCharacterStream、setNClob メソッドのような、JDBC 4.0 の新しい National Character メソッドでは、常にパラメーター値が Unicode 形式でサーバーに送信されます。
一方で、SQLServerPreparedStatement クラスと SQLServerCallableStatement クラスの setString、setCharacterStream、setClob メソッドのような非 National Character の API メソッドでは、sendStringParametersAsUnicode プロパティが既定値である "true" に設定されているときにのみ、値がサーバーに Unicode で送信されます。
Unicode 以外のパラメーター
Unicode 以外のパラメーターのCHAR、VARCHAR または LONGVARCHAR 型で最適なパフォーマンスを得るには、sendStringParametersAsUnicode 接続文字列プロパティを "false" に設定し、National Character メソッド以外のメソッドを使用します。
書式設定に関する問題
日付、時刻、通貨の場合、ローカライズされたデータのすべての書式設定は、Locale オブジェクトと、Date、Calendar、Number データ型用のさまざまな書式設定メソッドを使用して、Java 言語レベルで行われます。 JDBC ドライバーがロケールに依存するデータをローカライズされた書式で渡す必要があることはまれですが、このような場合は既定の JVM ロケールを使用して適切なフォーマッタが使用されます。
照合順序のサポート
JDBC Driver 3.0 では、SQL Server 2000 (8.x) と SQL Server 2005 (9.x) でサポートされるすべての照合順序に加え、新しい照合順序 (SQL Server 2008 (10.0.x) で導入された新バージョンの Windows 照合順序名) がサポートされます。
照合順序の詳細については、「照合順序と Unicode のサポート」と「Windows 照合順序名 (Transact-SQL)」を参照してください。
国際ドメイン名 (IDN) の使用
SQL Server 用 JDBC Driver 6.0 は国際ドメイン名 (IDN) の使用に対応しており、接続で要求されるとき、Unicode serverName を ASCII 互換エンコーディング (Punycode) に変換できます。 IDN がドメイン名システム (DNS) に Punycode 形式 (仕様は RFC 3490 で既定) で ASCII 文字列として保存されている場合、serverNameAsACE プロパティを「true」に設定することで Unicode サーバー名を変換できます。 そのように保存されていなければ、DNS サービスが Unicode 文字を使用できるように構成されている場合、serverNameAsACE プロパティを既定の「false」に設定します。 以前のバージョンの JDBC ドライバーの場合、Java の IDN.toASCII メソッドを使って serverName を Punycode に変換してから、そのプロパティを接続のために設定することもできます。
Note
Windows プラットフォーム以外のために記述されたリゾルバー ソフトウェアの大半はインターネット DSN 標準に基づき、多くの場合、IDN に Punycode 形式を使用します。一方で、プライベート ネットワークの Windows ベースのDNS サーバーはサーバーごとに UTF-8 文字を使用できるように構成できます。 詳細については、「Unicode 文字のサポート」を参照してください。