Code Set Independent

Code Set Independent

[3] CSI 文字文字列データ構造
[1] Rubyist Magazine - Ruby M17N の設計と実装 () http://magazine.rubyist.net/?0025-Ruby19_m17n#l13

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 とは無関係です。

[4] 関連: BUCS