EUC は Extended UNIX Code の省略形です。 Solaris 9 オペレーティング環境は、日本の PC-Kanji (Shift_JIS)、台湾の Big5、中華人民共和国の GBK のような非 EUC エンコーディングをサポートしています。 コンピュータ市場の大半では EUC 以外のコードセットサポートが要求されるため、Solaris 9 では EUC と非 EUC コードセットのサポートを可能にする強固なフレームワークを提供します。このサポートを CSI と呼びます。
CSI の目標は、Solaris オペレーティング環境のライブラリやコマンドから、特定のコードセットやエンコーディング方法への依存性を除去することです。CSI アーキテクチャにより、Solaris 環境において UNIX ファイルシステムに安全なエンコーディングをサポートできます。CSI は UTF-8、PC-Kanji、Big5 など、多くの非 EUC コードセットをサポートします。
CSI により、アプリケーションおよびプラットフォームソフトウェア開発者は、UTF-8 など、エンコーディングからコードを独立させたり、ソースコードを変更せずに新しいエンコーディングを採用することができます。このアーキテクチャのアプローチは、JavaTM の国際化とも異なります。Java のアプリケーションは UTF-16 に依存する必要があります。
既存の多くの国際化アプリケーション (たとえば Motif など) は、基礎となるシステムから自動的に CSI のサポートを継承します。これらのアプリケーションは、変更しなくても新しいロケールで動作します。
CSI は本来どのコードセットにも依存しませんが、Solaris 9 環境ではファイルコードのエンコーディング (コードセット) には、次のような前提条件があります。
NULL で終わる複数バイトの文字列をサポートする必要があるため、複数バイト文字の一部に NULL (0x00) を使用することはできない。
UNIX のパス名をサポートする必要があるため、複数バイト文字の一部に ASCII のスラッシュ (0x2f) を使用することはできない。
この項では、Solaris 9 環境で使用できる CSI 対応のコマンドを示します。各コマンドのマニュアルページには、コマンドが CSI 対応かどうかを示す属性部分があります。
特に断りがない限り、これらのコマンドは /usr/bin ディレクトリに格納されています。
libc (/usr/lib/libc.so) のほとんどすべての関数は CSI に対応しています。しかし、libc の以下の関数は EUC 依存の関数であるため、CSI に対応していません。
csetcol()
csetlen()
euccol()
euclen()
eucscol()
getwidth()
csetno()
wcsetno()
Solaris 9 製品の libgen (/usr/ccs/lib/libgen.a) と libcurses (/usr/ccs/lib/libcurses.a) は国際化されていますが、 CSI に対応していません。