char_t
wchar_t
CSI 方式Code Set Independent 方式の場合には UCS 正規化方式のように、唯一絶対の内部コードというようなものは存在しません。全てのエンコーディングを対等に扱っています。また、この方式の場合、外部で用いられているコードと内部で用いられるコードが一致するため、不必要な変換が行われません。ここから、変換にかかる処理の削減を図ることができるだけでなく、変換による思わぬ情報の欠落を未然に防ぐことができます。CSI は Ruby 以外に、Solaris、Citrus といった、__STDC_ISO_10646__ でない C を用いて構築された環境で用いられています。__STDC_ISO_10646__ が定義されている C の場合、wchar_t の中の数値が 0x3042 ならば、それはひらがなの「あ」を意味しています。しかし、CSI の場合、そうだとは限りません。よって、メモリの中に入っている値を覗き見て、その意味を勝手に断定することは、バグの元となります。CSI 方式で文字を扱う場合は、必ず文字を扱う関数を通して文字列を扱わなければなりません。
CSI 方式
Code Set Independent 方式の場合には UCS 正規化方式のように、唯一絶対の内部コードというようなものは存在しません。全てのエンコーディングを対等に扱っています。また、この方式の場合、外部で用いられているコードと内部で用いられるコードが一致するため、不必要な変換が行われません。ここから、変換にかかる処理の削減を図ることができるだけでなく、変換による思わぬ情報の欠落を未然に防ぐことができます。CSI は Ruby 以外に、Solaris、Citrus といった、__STDC_ISO_10646__ でない C を用いて構築された環境で用いられています。__STDC_ISO_10646__ が定義されている C の場合、wchar_t の中の数値が 0x3042 ならば、それはひらがなの「あ」を意味しています。しかし、CSI の場合、そうだとは限りません。よって、メモリの中に入っている値を覗き見て、その意味を勝手に断定することは、バグの元となります。CSI 方式で文字を扱う場合は、必ず文字を扱う関数を通して文字列を扱わなければなりません。
[2] 制御文字の CONTROL SEQUENCE INTRODUCER とは無関係です。
CONTROL SEQUENCE INTRODUCER
[4] 関連: BUCS