[FIG(short list)[ [3] [[CSI]] [[文字]]・[[文字列]]データ構造
- [CODE[char_t]]
- [CODE[wchar_t]]
]FIG]


[FIG(quote)[
[FIGCAPTION[
[1] [CITE@ja[Rubyist Magazine - Ruby M17N の設計と実装]]
([TIME[2016-10-14 11:40:09 +09:00]])
<http://magazine.rubyist.net/?0025-Ruby19_m17n#l13>
]FIGCAPTION]

> CSI 方式
> Code Set Independent 方式の場合には UCS 正規化方式のように、唯一絶対の内部コードというようなものは存在しません。全てのエンコーディングを対等に扱っています。また、この方式の場合、外部で用いられているコードと内部で用いられるコードが一致するため、不必要な変換が行われません。ここから、変換にかかる処理の削減を図ることができるだけでなく、変換による思わぬ情報の欠落を未然に防ぐことができます。CSI は Ruby 以外に、Solaris、Citrus といった、__STDC_ISO_10646__ でない C を用いて構築された環境で用いられています。__STDC_ISO_10646__ が定義されている C の場合、wchar_t の中の数値が 0x3042 ならば、それはひらがなの「あ」を意味しています。しかし、CSI の場合、そうだとは限りません。よって、メモリの中に入っている値を覗き見て、その意味を勝手に断定することは、バグの元となります。CSI 方式で文字を扱う場合は、必ず文字を扱う関数を通して文字列を扱わなければなりません。

]FIG]

[2] [[制御文字]]の [CODE(charname)@en[CONTROL SEQUENCE INTRODUCER]] とは無関係です。

[4] 
関連:
[[BUCS]]