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