JFP ユーザーズガイド

第 6 章 日本語環境用 SunOS コマンド

この章では、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(1) および iconv_ja(5) のマニュアルページを参照してください。また、iconv(3C) インタフェースを使用する開発者は、『JFP 開発ガイド』も参照してください。

表 6-1 iconv コマンドによる変換
 変換元文字コード 変換先文字コード
eucJPPCK
eucJPISO-2022-JP
eucJPISO-2022-JP.RFC1468
eucJPJIS7
eucJPSJIS
eucJPUTF-8
eucJPUTF-8-Java
eucJPjis
eucJPibmj
eucJPibm5026
eucJPibm5035
eucJPibm930
eucJPibm931
eucJPibm939
SJISeucJP
SJISISO-2022-JP
SJISUTF-8
SJISjis
SJISibmj
PCKeucJP
PCKUTF-8
PCKUTF-8-Java
PCKISO-2022-JP
PCKISO-2022-JP.RFC1468
PCKjis
PCKibmj
PCKibm5026
PCKibm5035
PCKibm930
PCKibm931
PCKibm939
ISO-2022-JPeucJP
ISO-2022-JPPCK
ISO-2022-JPSJIS
ISO-2022-JPUTF-8
UTF-8eucJP
UTF-8SJIS
UTF-8PCK
UTF-8ISO-2022-JP
UTF-8ISO-2022-JP.RFC1468
UTF-8ibm5026
UTF-8ibm5035
UTF-8ibm930
UTF-8ibm931
UTF-8ibm939
UTF-8ms932
UTF-8UTF-8-ms932
UTF-8-ms932UTF-8
UTF-8-JavaeucJP
UTF-8-JavaPCK
JIS7eucJP
jiseucJP
jisPCK
jisSJIS
ibmjeucJP
ibmjPCK
ibmjSJIS
ibm5026PCK
ibm5026UTF-8
ibm5026eucJP
ibm5035PCK
ibm5035UTF-8
ibm5035eucJP
ibm930PCK
ibm930UTF-8
ibm930eucJP
ibm931PCK
ibm931UTF-8
ibm931eucJP
ibm939PCK
ibm939UTF-8
ibm939eucJP
ms932UTF-8

上記の文字コードの意味は以下のとおりです。

表 6-2 iconv で使用する文字コードの意味
 文字コード 意味
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
ibm930

IBM CCSID (Coded Character Set Identifier) 930 

SBCS はカタカナと英小文字両方をサポート。SBCS の英小文字に割り当てるコードはコードページ 37 (米国/カナダ) とは異なる。MBCS 中のユーザー定義文字領域は 4370 文字分 

ibm931

IBM CCSID (Coded Character Set Identifier) 931 

SBCS はカタカナをサポートしない。MBCS は ibm930 と同じ 

ibm939

IBM CCSID (Coded Character Set Identifier) 939 

SBCS はカタカナと英小文字両方をサポート。SBCS の英小文字に割り当てるコードはコードページ 37 (米国/カナダ) と同じ。MBCS は ibm930 と同じ 

ibm5026

IBM CCSID (Coded Character Set Identifier) 5026 

MBCS 中のユーザー定義文字領域が 1880 文字分であることを除き ibm930 と同じ。iconv の動作は ibm930 と同じ 

ibm5035

IBM CCSID (Coded Character Set Identifier) 5035 

MBCS 中のユーザー定義文字領域が 1880 文字分であることを除き ibm939 と同じ。iconv の動作は ibm939 と同じ 

ms932 WindowsNT 3.51 がマイクロソフトコードページ 932 と Unicode の間で行う変換に基づいた変換を行う
UTF-8-ms932 ms932 からの変換の結果得られるコードセット (UTF-8、eucJP、PCK など)と、ms932 以外のコードセットからの変換の結果得られる UTF-8 との間で変換可能

JLE 1.x との互換性を持つコード変換フィルタのコマンドには、次のものがあります。

表 6-3 コード変換フィルタコマンド
 コマンド 機能
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) コマンドを使用してください。

漢字端末と日本語入力

TTY 環境の構成に使用するコマンドは、sttysettermjtty の 3 つです。これらのコマンドの使用方法については、各マニュアルページを参照してください。ここでは、setterm を使って日本語端末を構築する際の日本語文字コード変換 STREAMS モジュールについて説明します。

JFP は、端末ベースの入出力に対して、日本語の処理機能を提供しています。その中でも、setterm には、種類の異なる端末間にインタフェースを提供する機能があります。setterm を使って端末を設定すると、扱う文字コード (ロケールにより設定される) と端末の文字コードの違いをコード変換によって吸収できます。また STREAMS 内部で日本語文字コードが正しく処理されるように設定できます。

たとえば、ja または ja_JP.EUC ロケールで PCK 漢字端末が接続されている場合、入力は日本語 EUC に変換され、端末への出力は PCK に変換されます。

漢字端末を設定する setterm コマンドは、次のような書式で使用します。


sun% setterm [ -x name ] [ -t ]

日本語文字コード変換 STREAMS モジュール

JFP は、setterm コマンドで漢字端末を設定できるように、以下のような日本語文字コード変換 STREAMS モジュールを提供しています。

表 6-4 日本語文字コード変換 STREAMS モジュール
 コード変換 STREAMS モジュール 説明
jconvs PCK 端末用
jconv7 7 ビット JIS 端末用
jconv8 8 ビット JIS 端末用
jconvu UTF-8 端末用
jconvrs ja_JP.PCK ロケール用
jconvru ja_JP.UTF-8 ロケール用

setterm コマンドを実行すると、現在のロケールと設定したい端末名に応じて、適切な STREAMS モジュールが設定されます。表 6-5setterm-x オプションで指定できる端末名を示します。


注 -

日本語ロケール間でロケールを切り替える場合は、そのたびに端末の設定も行なってください。日本語ロケール間では push される STREAMS モジュールが異なるため、再度 setterm を実行しないと、文字を正しく表示できません。


表 6-5 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 端末用
Errorsetterm を行なった際のエラー復旧用
sane STREAMS のリセット用

ロケールと端末の文字が同じであれば、setterm(1) を使用しないで端末の設定を行うことができます。


sun %	stty deteucw

mailx/in.comsat でのコード変換

複数バイト言語国際化のために拡張された mailx を使用すると、日本語 EUC で書かれたメールメッセージは、自動的に JIS コードに変換されて送信されます。このようにして変換されたメッセージは、受信後、メッセージを画面に表示するコマンド (typeprint など) で EUC に変換されて表示されます。また、savecopywrite などのコマンドを使用すると、メッセージを EUC に変換して格納できます。この変換は、フォルダ内のコードを決定するために用意されたメール変数 folderconv が設定されている場合に実行されます。folderconv が設定されていない場合、メッセージはコード変換されません。folderconv はデフォルトで設定されています。ただし、nsavencopy を使用すると、folderconv の指定に関係なく、メッセージはコード変換されません。

複数バイト言語国際化のために拡張された in.comsat は、着信メールを JIS コードから EUC に変換して表示します。

使用方法は、第 5 章「国際化 SunOS コマンドの利用」「電子メールの送受信」を参照してください。