共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)

状態を持つ変換と状態を持たない変換

コード・セットは、状態を持つ (ステートフルな) エンコーディングと状態を持たない (ステートレスな) エンコーディングの 2 つのカテゴリに分類できます。

状態を持つエンコーディング

状態を持つエンコーディングは、特定のコード値に関連付けられた文字セットを変換するのに、シフトイン / シフトアウトなどの制御コードのシーケンスを使用します。

たとえば、コンパウンド・テキストでは、文字データの流れの中で日本語 16 ビット・データの開始を示すのにコントロール・シーケンス「ESC$(B」を使用できます。また、「ESC(B」は、そのダブルバイト文字データの終了と 8 ビット ASCII データの開始を示すのに使用できます。状態を持つエンコーディングでは、ビット値 0x43 はシフト状態が不明の場合解釈できません。EBCDIC アジア・コード・セットは、シフトイン制御とシフトアウト制御を、それぞれダブルバイトとシングルバイト・エンコーディング間の入れ換えに使用します。

別のコード・セットへの状態を持つエンコーディング変換を行うために記述されるコンバータは、特別な処理が必要なためにやや複雑になります。

状態を持たないエンコーディング

状態を持たないコード・セットは、次の 2 つのうちの 1 つに分類できます。

マルチバイト・コード・セットという用語は、1 つの文字をエンコードするのに 1 つ以上のバイトを必要とするコード・セットにも使います。マルチバイト・コード・セットは状態を持たないと見なされます。


注 -

コード・セットが同じ文字セットを表すときに限り、変換してください。