7.6. データベースの Unicode サポートを設定する
すべてのフィールドの Unicode サポートは、データベースが VARCHAR および CHAR フィールドで Unicode 文字セットの使用を許可するかどうかによって異なります。
- これらのフィールドが設定可能な場合、通常、Unicode はフィールド長を犠牲にして機能します。
- データベースが NVARCHAR フィールドと NCHAR フィールドでのみ Unicode をサポートしている場合、サーバースキーマは VARCHAR フィールドと CHAR フィールドを広範囲に使用するため、すべてのテキストフィールドの Unicode サポートは機能しない可能性があります。
データベーススキーマは、次の特殊フィールドでのみ Unicode 文字列のサポートを提供します。
- Realms: 表示名、HTML 表示名、ローカリゼーションテキスト (キーと値)
- Federation プロバイダー: 表示名
- Users: ユーザー名、名、姓、属性名、値
- Groups: 名前、属性名、値
- Roles: 名前
- オブジェクトの説明
それ以外の場合、データベースエンコーディングに含まれる文字に制限され、多くの場合それは 8 ビットです。ただし、データベースシステムによっては、Unicode 文字の UTF-8 エンコーディングを有効にし、すべてのテキストフィールドで完全な Unicode 文字セットを使用できます。特定のデータベースでは、この選択により、最大文字列長が 8 ビットエンコーディングでサポートされる最大文字列長よりも短くなる可能性があります。
7.6.1. Oracle データベースの Unicode サポートを設定する
Oracle データベースが VARCHAR フィールドおよび CHAR フィールドで Unicode をサポートするように作成されている場合、そのデータベースでは Unicode 文字がサポートされます。たとえば、AL32UTF8 をデータベース文字セットとして設定したとします。この場合、JDBC ドライバーに特別な設定は必要ありません。
データベースが Unicode をサポートするように作成されていない場合、特殊フィールドで Unicode 文字をサポートするように JDBC ドライバーを設定する必要があります。2 つのプロパティーを設定します。これらのプロパティーは、システムプロパティーまたは接続プロパティーとして設定できることに注意してください。
-
oracle.jdbc.defaultNChar
をtrue
に設定します。 必要に応じて、
oracle.jdbc.convertNcharLiterals
をtrue
に設定します。注記これらのプロパティーとパフォーマンスへの影響の詳細は、Oracle JDBC ドライバーの設定ドキュメントを参照してください。
7.6.2. Microsoft SQL Server データベースの Unicode サポート
Unicode 文字は、Microsoft SQL Server データベースの特殊フィールドでのみサポートされます。データベースには特別な設定は必要ありません。
パフォーマンスを大幅に向上させるには、JDBC ドライバーの sendStringParametersAsUnicode
プロパティーを false
に設定する必要があります。このパラメーターがないと、Microsoft SQL Server はインデックスを使用できない可能性があります。
7.6.3. MySQL データベースの Unicode サポートを設定する
CREATE DATABASE コマンドの使用時に VARCHAR フィールドと CHAR フィールドで Unicode サポートを指定してデータベースが作成されている場合、MySQL データベースで Unicode 文字がサポートされます。
utf8 文字セットとはストレージ要件が異なるため、utf8mb4 文字セットはサポートされていないことに注意してください。詳細は、MySQL のドキュメントを参照してください。この状況では、バイト数ではなく文字数を収容するように列が作成されるため、非特殊フィールド以外の長さ制限は適用されません。データベースのデフォルト文字セットで Unicode を保存できない場合、特殊フィールドのみが Unicode 値を保存できます。
- Start MySQL Server.
- JDBC ドライバー設定で、JDBC 接続設定 を見つけます。
-
接続プロパティー
characterEncoding=UTF-8
を追加します。
7.6.4. PostgreSQL データベースの Unicode サポートを設定する
データベースの文字セットが UTF8 の場合、Unicode は PostgreSQL データベースでサポートされます。任意のフィールドで Unicode 文字を使用でき、非特殊フィールドでフィールド長の削減はありません。JDBC ドライバーに特別な設定は必要ありません。文字セットは、PostgreSQL データベースの作成時に決定されます。
次の SQL コマンドを入力して、PostgreSQL クラスターのデフォルトの文字セットを確認します。
show server_encoding;
デフォルトの文字セットが UTF 8 ではない場合は、次のようなコマンドを使用して、デフォルトの文字セットが UTF8 のデータベースを作成します。
create database keycloak with encoding 'UTF8';