Unicode サポート
InterSystems IRIS は、Unicode 国際文字セットをサポートします。Unicode 文字は 16 ビット文字であり、ワイド文字と呼ばれることもあります。
$ZVERSION 特殊変数 (Build nnnU) および $SYSTEM.Version.IsUnicode()Opens in a new tab メソッドは、InterSystems IRIS インストールで Unicode がサポートされていることを示すものです。
ほとんどの用途に、InterSystems IRIS は Unicode 基本多言語面 (16 進数 0000 から FFFF) のみをサポートします。これには、最も一般的に使用される国際文字が含まれています。内部的に、InterSystems IRIS では UCS-2 エンコーディングを使用します。これは基本多言語面の場合、UTF-16 と同じです。$WCHAR、$WISWIDE、および関連する関数を使用することで、Unicode 基本多言語面に存在しない文字で作業できます。
InterSystems IRIS は標準の UTF-16 エンコードと同様に、1 文字あたり 16 ビット (2 バイト) を割り当てることで、Unicode 文字列をメモリにエンコードします。ただし、Unicode 文字列をグローバルに保存する際に、すべての文字の数値が 255 以下の場合、InterSystems IRIS は 1 文字あたり 8 ビット (1 バイト) を使用して文字列を格納します。文字列に 255 より大きな数値の文字が含まれる場合、InterSystems IRIS は圧縮アルゴリズムを適用して、文字列がストレージ内で占有する領域を減らします。
データの変換
Unicode と UTF-8 間の変換、および他の文字エンコーディングへの変換については、$ZCONVERT 関数を参照してください。ZZDUMP を使用して、文字列の 16 進エンコーディングを表示できます。$CHAR を使用して、文字 (または文字列) をその 10 進数 (10 進法) エンコーディングで指定することができます。$ZHEX を使用して、16 進数を 10 進数に、または 10 進数を 16 進数に変換することができます。
識別子の Unicode
Unicode 文字は、255 より大きな 10 進文字コード値のアルファベット文字です。例えば、小文字のギリシャ文字ラムダは Unicode 文字で $CHAR(955) になります。
識別子では、以下の例外を除き、Unicode 文字を使用できます。
-
変数名:ローカル変数名には Unicode 文字を使用できます。一方、グローバル変数名とプロセス・プライベート・グローバル変数名には、Unicode 文字を使用できません。あらゆるタイプの変数の添え字が Unicode 文字で指定できます。
-
データベースを暗号化する際に管理者が使用するユーザ名とパスワードには Unicode 文字を使用できません。
Unicode 文字を処理する際に、ロケール識別子は考慮されません。つまり、Unicode 文字で構成される識別子が、あるロケールで有効な場合、その識別子はどのロケールでも有効です。前述の例外は引き続き適用されます。
日本語ロケールでは、InterSystems IRIS の名前におけるアクセント記号付きラテン文字がサポートされていません。日本語の名前には、(日本語の文字の他に) ラテン文字 A-Z と a-z (65-90 と 97-122)、およびギリシャ語の大文字 (913-929 と 931-937) を使用できます。