この章では、JFP によって日本語環境用に提供される SunOS コマンドについて説明します。
現在、日本語文字コードには JFP で採用している日本語 EUC 、PCK のほかに、JIS コード、UTF8 などがあります。
Sun のネットワーク機能を使って、他のマシンからファイルをコピーしたり、また他のマシンへファイルを転送したりする場合、採用している日本語文字コードが違うとそのままでは文字化けを起こして使用できません。日本語 EUC から JIS コードへ、またはその逆など相互にファイル中の漢字コードを変換するフィルタが、このコード変換フィルタです。
Solaris では、『X/Open Portability Guide Issue 4.2 (XPG4.2)』規定に準拠した iconv コマンドがサポートされています。iconv は次のような書式で使用します。
sun% iconv -f <変換元文字コード> -t <変換先文字コード> [filename...] |
JFP では、この iconv に対応した、日本語文字コード用の変換モジュールを提供しています。iconv に以下のように指定して実行すると、変換が実現されます。iconv コマンドについては、iconv(1) および iconv_ja(5) のマニュアルページも参照してください。また、iconv(3) インタフェースを使用したい開発者の方は、『JFP 開発ガイド』の第 4 章「日本語文字コード変換」もあわせて参照してください。
表 6-1 iconv コマンドによる変換
変換元文字コード |
変換先文字コード |
eucJP |
PCK |
eucJP |
ISO-2022-JP |
eucJP |
ISO-2022-JP.RFC1468 |
eucJP |
JIS7 |
eucJP |
SJIS |
eucJP |
UTF-8 |
eucJP |
UTF-8-Java |
eucJP |
jis |
eucJP |
ibmj |
SJIS |
eucJP |
SJIS |
ISO-2022-JP |
SJIS |
UTF-8 |
SJIS |
jis |
SJIS |
ibmj |
PCK |
eucJP |
PCK |
UTF-8 |
PCK |
UTF-8-Java |
PCK |
ISO-2022-JP |
PCK |
ISO-2022-JP.RFC1468 |
PCK |
jis |
PCK |
ibmj |
ISO-2022-JP |
eucJP |
ISO-2022-JP |
PCK |
ISO-2022-JP |
SJIS |
ISO-2022-JP |
UTF-8 |
UTF-8 |
eucJP |
UTF-8 |
SJIS |
UTF-8 |
PCK |
UTF-8 |
ISO-2022-JP |
UTF-8 |
ISO-2022-JP.RFC1468 |
UTF-8-Java |
eucJP |
UTF-8-Java |
PCK |
JIS7 |
eucJP |
jis |
eucJP |
jis |
PCK |
jis |
SJIS |
ibmj |
eucJP |
ibmj |
PCK |
ibmj |
SJIS |
上記の文字コードの意味は以下のとおりです。
意味 |
|
eucJP |
日本語 EUC |
PCK |
PCK |
SJIS |
PCK と同じ |
ISO-2022-JP |
ISO 2022 情報交換用符号による G0 への指示機能を用いて "UI-OSF 日本語環境実装規約 Version 1.1" の規定に従い表現された、ISO 646 IRV または JIS X 0201、JIS X 0208、および JIS X 0212 |
ISO-2022-JP.RFC1468 |
ISO 2022 情報交換用符号による G0 への指示機能を用いて RFC1468 (Request for Comments: 1468 Japanese Character Encoding for Internet Messages) の規定に従い表現された、ISO 646 IRV または JIS X 0201-1976 (片仮名用図形 (キャラクタ集合を除く) および JIS X 0208-1983 |
JIS7 |
ISO-2022-JP と同じ |
jis |
JLE、JFP 2.4 以前に提供されていた 7 ビット JIS コード |
ibmj |
IBM 漢字コード |
UTF-8 |
UNICODE |
UTF-8-Java |
Java で実装されている UNICODE |
JLE 1.x からの互換性を持つコード変換フィルタのコマンドとして、次のものがあります。
表 6-2 コード変換フィルタコマンド
コマンド |
機能 |
jistoeuc |
JIS コードを日本語 EUC に変換 |
jistosj |
JIS コードを PCK に変換 |
euctojis |
日本語 EUC を JIS コードに変換 |
euctosj |
日本語 EUC を PCK に変換 |
sjtojis |
PCK を JIS コードに変換 |
sjtoeuc |
PCK を日本語 EUC に変換 |
ibmjtoeuc |
IBM 漢字コードを日本語 EUC に変換 |
euctoibmj |
日本語 EUC を IBM 日本語コードに変換 |
ただし、これらには以下の制限事項があるため、通常は iconv(1) コマンドでの使用をお勧めします。
日本語 EUC との変換を行うコマンドでは、JIS X 0212-1990 (いわゆる補助漢字) をサポートしていません。
PCK との変換を行うコマンドでは、『TOG (The Open Group) 日本ベンダ協議会推奨 日本語 EUC・シフト JIS 間コード変換仕様』に基づく変換をサポートしていません。『TOG 日本ベンダ協議会推奨 日本語 EUC・シフト JIS 間コード変換仕様』に関しては、付録 A 「文字コード変換規則」を参照してください。
JIS との変換を行うコマンドでは、更新番号を含むエスケープシーケンスに対応していません。
TTY 環境に構成に使用するコマンドは stty、setterm、および jtty です。これらのコマンドの使用については、各マニュアルページを参照してください。ここでは日本語端末を seeterm で構築する上で使用される、日本語文字コード変換 STREAMS モジュールについて説明します。
JFP は、端末ベースの入出力に対して日本語の処理機能を提供しています。その中でいろいろな種の端末とのインタフェースを取るために setterm で端末を設定することによって扱う文字コード (ロケールにより設定される) と端末の文字コードの違いをコード変換することによって吸収したり、STREAMS 内部で日本語文字コードが正しく扱うことができるような設定をしたりします。
たとえば、ja ロケールで PCK 漢字端末が接続されている場合、入力は日本語 EUC に変換され、端末への出力は PCK に変換されます。
漢字端末を設定する setterm コマンドは、次のような書式で使用します。
sun% setterm [ -x name ] [ -t ] |
JFP では、setterm コマンドで漢字端末を設定できるように、以下のような日本語文字コード変換 STREAMS モジュールを提供しています。
表 6-3 日本語文字コード変換 STREAMS モジュール
コード変換 STREAMS モジュール |
説明 |
jconvs |
PCK 端末用 |
jconv7 |
7 ビット JIS 端末用 |
jconv8 |
8 ビット JIS 端末用 |
jconvu |
UTF-8 端末用 |
jconvrs |
ja_JP.PCK ロケール用 |
jconvru |
ja_JP.UTF-8 ロケール用 |
現在のロケールと設定したい端末名に応じて、適当な STREAMS モジュールが setterm コマンドを通して設定されます。以下は、setterm の -x オプションで指定可能な端末名です。
日本語ロケール間でロケールを切り替える場合は、その都度、端末設定も行うようにしてください。これらのロケール間では push される STREAMS モジュールが異なるため、再度 setterm が実行されないと正しく表示できなくなります。
端末名 |
説明 |
JapanPCK PCK JapanSJIS SJIS |
PCK 端末用 |
JapanNewJIS8 NewJIS8 |
8 ビット新 JIS 端末用 |
JapanNewJIS7 NewJIS7 |
7 ビット新 JIS 端末用 |
JapanOldJIS8 OldJIS8 |
8 ビット旧 JIS 端末用 |
JapanOldJIS7 OldJIS7 |
7 ビット旧 JIS 端末 |
JapanEUC GenericEUC EUC |
日本語 EUC 端末用 |
UTF-8 |
UTF-8 端末用 |
ASCII |
ASCII 端末用 |
Error |
setterm を行なった際のエラー復旧用 |
sane |
STREAMS のリセット用 |
複数バイト言語国際化のために拡張された mailx を用いると、日本語 EUC で書かれたメールメッセージは自動的に JIS コードに変換されて送信されます。このようにして変換されたメッセージは受信後、type、print などメッセージを画面に表示するコマンドにより EUC に変換されて表示されます。また、save、copy、write などのコマンドにより EUC に変換されて格納できます。この変換は、フォルダ内のコードを決定するために用意されたメール変数 folderconv が設定されている場合に実行されます。folderconv が設定されていない場合、メッセージはコード変換されずに格納されます。folderconv はデフォルトで設定されています。また、folderconv がどのような指定の場合でもコード変換をしないで格納するためのコマンドとして、nsave と ncopy が用意されています。
複数バイト言語国際化のために拡張された in.comsat は、到着メールを JIS コードから EUC に変換して表示します。
使用方法は、第 5 章「国際化 SunOS コマンドの利用」「国際化 SunOS コマンドの利用の「電子メールの送受信」を参照してください。