この章では、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 コマンドによる変換変換元文字コード | 変換先文字コード |
---|---|
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 |
eucJP | ibm5026 |
eucJP | ibm5035 |
eucJP | ibm930 |
eucJP | ibm931 |
eucJP | ibm939 |
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 |
PCK | ibm5026 |
PCK | ibm5035 |
PCK | ibm930 |
PCK | ibm931 |
PCK | ibm939 |
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 | ibm5026 |
UTF-8 | ibm5035 |
UTF-8 | ibm930 |
UTF-8 | ibm931 |
UTF-8 | ibm939 |
UTF-8 | ms932 |
UTF-8 | UTF-8-ms932 |
UTF-8-ms932 | UTF-8 |
UTF-8-Java | eucJP |
UTF-8-Java | PCK |
JIS7 | eucJP |
jis | eucJP |
jis | PCK |
jis | SJIS |
ibmj | eucJP |
ibmj | PCK |
ibmj | SJIS |
ibm5026 | PCK |
ibm5026 | UTF-8 |
ibm5026 | eucJP |
ibm5035 | PCK |
ibm5035 | UTF-8 |
ibm5035 | eucJP |
ibm930 | PCK |
ibm930 | UTF-8 |
ibm930 | eucJP |
ibm931 | PCK |
ibm931 | UTF-8 |
ibm931 | eucJP |
ibm939 | PCK |
ibm939 | UTF-8 |
ibm939 | eucJP |
ms932 | UTF-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) コマンドを使用してください。
日本語 EUC との変換を行うコマンドは、JIS X 0212-1990 (補助漢字) をサポートしていません。
PCK との変換を行うコマンドは、『TOG (The Open Group) 日本ベンダ協議会推奨 日本語 EUC・シフト JIS 間コード変換仕様』に基づく変換をサポートしていません。『TOG 日本ベンダ協議会推奨 日本語 EUC・シフト JIS 間コード変換仕様』については、付録 A 「文字コード変換規則」 を参照してください。
JIS との変換を行うコマンドは、更新番号を含むエスケープシーケンスに対応していません。
TTY 環境の構成に使用するコマンドは、stty、setterm、jtty の 3 つです。これらのコマンドの使用方法については、各マニュアルページを参照してください。ここでは、setterm を使って日本語端末を構築する際の日本語文字コード変換 STREAMS モジュールについて説明します。
JFP は、端末ベースの入出力に対して、日本語の処理機能を提供しています。その中でも、setterm には、種類の異なる端末間にインタフェースを提供する機能があります。setterm を使って端末を設定すると、扱う文字コード (ロケールにより設定される) と端末の文字コードの違いをコード変換によって吸収できます。また STREAMS 内部で日本語文字コードが正しく処理されるように設定できます。
たとえば、ja または ja_JP.EUC ロケールで PCK 漢字端末が接続されている場合、入力は日本語 EUC に変換され、端末への出力は PCK に変換されます。
漢字端末を設定する setterm コマンドは、次のような書式で使用します。
sun% setterm [ -x name ] [ -t ] |
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-5 に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 のリセット用 |
ロケールと端末の文字が同じであれば、setterm(1) を使用しないで端末の設定を行うことができます。
sun % stty deteucw |
複数バイト言語国際化のために拡張された mailx を使用すると、日本語 EUC で書かれたメールメッセージは、自動的に JIS コードに変換されて送信されます。このようにして変換されたメッセージは、受信後、メッセージを画面に表示するコマンド (type、print など) で EUC に変換されて表示されます。また、save、copy、write などのコマンドを使用すると、メッセージを EUC に変換して格納できます。この変換は、フォルダ内のコードを決定するために用意されたメール変数 folderconv が設定されている場合に実行されます。folderconv が設定されていない場合、メッセージはコード変換されません。folderconv はデフォルトで設定されています。ただし、nsave と ncopy を使用すると、folderconv の指定に関係なく、メッセージはコード変換されません。
複数バイト言語国際化のために拡張された in.comsat は、着信メールを JIS コードから EUC に変換して表示します。
使用方法は、第 5 章「国際化 SunOS コマンドの利用」の 「電子メールの送受信」を参照してください。