この章では Japanese Feature Package (以降、JFP とします) の位置づけなどを紹介し、SunOS を中心に、JFP の提供する機能について説明します。Solaris CDE と日本語 OpenWindows の機能については、パート II, JFP - GUI を参照してください。
JFP は、Solaris で日本語機能を使用するための追加パッケージです。このパッケージには、SunOS と Solaris CDE、OpenWindows 用の日本語サポート機能が含まれています。Solaris は、JFP と、国際化された SunOS、Solaris CDE、OpenWindows で構成されています。
このマニュアルでは、システムのソフトウェアやアプリケーションを特定の言語や文化、慣習 (これらをまとめてロケール (locale) と呼びます) に適応させることを「各国語対応 (localization)」と呼びます。日本語対応とは、日本語および日本の文化、慣習を対象とした各国語対応のことです。各国語対応の要求はさまざまですが、言語に依存しない共通の枠組みで処理できる部分と、特定の言語専用の機能を必要とする部分があります。
各国語対応のために利用できる共通の枠組みを提供することを「国際化 (internationalization)」と呼びます。システムやアプリケーションを国際化することにより、複数の言語の各国語対応を簡単かつ統一された方法で実現できます。
エンコーディングに依存しない国際化機構を「CSI (Code Set Independence) 化された国際機構」と呼びます。国際化機構の CSI 化により、日本語 EUC (Extended Unix Code) を扱う ja または ja_JP.EUC ロケールに加え、PC 漢字コードを扱う ja_JP.PCK ロケール、UTF-8 コードを扱う ja_JP.UTF-8 ロケールがサポートされます。ただし、現時点では、対応するコマンドやライブラリなどに制限があります。CSI 化されたコマンドやライブラリについては、『国際化対応言語環境の利用ガイド』を参照してください。
JFP は、国際化された SunOS と Solaris CDE および OpenWindows に対して日本語のための各国語化機能を提供します。
JFP は、パッケージと呼ばれるインストールの単位の集合からなります (SUNWjfpr、SUNWjfpu など) 。JFP のパッケージがシステム上に存在するかどうかは、pkginfo(1) コマンドを使って調べることができます。たとえば、grep(1) コマンドを併用して次のように入力します。
sun% pkginfo | grep SUNWjfp : system SUNWjfpr Japanese Feature Package root files system SUNWjfpu Japanese Feature Package user files : : |
JFP パッケージの一覧は、『Solaris 8 ご使用にあたって (SPARC 版 / Intel 版)』 で確認できます。
JFP は、システム提供の日本語ロケールとして、日本語 EUC を扱う ja または ja_JP.EUC ロケール、PC 漢字コードを扱う ja_JP.PCK ロケール、UTF-8 を扱う ja_JP.UTF-8 ロケールを提供します (以降、この 3 ロケールを総称して「日本語ロケール」と記述します)。 「japanese」というロケール名は、ja と同等のロケールを提供します。これは、日本語 Solaris 1.x システムとのネットワーク環境での共存のために用意されたものです。日本語ロケールの定義内容の詳細は、第 2 章「日本語ロケール」を参照してください。
JFP は、メッセージの国際化機能を利用して、日本語化されたメッセージカタログを提供しています。ただし、SunOS が提供するすべてのコマンド、ライブラリで、メッセージが国際化されているわけではありません。国際化されていないメッセージは、日本語環境でも英語で表示されます。
SunOS 5.x で国際化されたコマンドに加えて、日本語環境をサポートするための以下の SunOS コマンドが提供されます。これらのコマンドの使用法については、第 6 章「日本語環境用 SunOS コマンド」と各コマンドのマニュアルページを参照してください。
表 1-1 JFP 日本語環境用コマンド
JFP は、SunOS の国際化されたコマンドを拡張した以下のコマンドも提供します。これらのコマンドの使用法については、第 5 章「国際化 SunOS コマンドの利用」と第 6 章「日本語環境用 SunOS コマンド」のほか、各コマンドのマニュアルページを参照してください。
表 1-2 国際化拡張コマンド
/usr/bin/ setterm コードセット変換用 STREAMS モジュールの構成用コマンド /usr/SUNWale/bin/ mailx 複数バイト言語の国際化のために拡張された mailx talk 複数バイト言語の国際化のために拡張された talk /usr/SUNWale/sbin/ in.comsat 複数バイト言語の国際化のために拡張された in.comsat |
mailx、talk、install_comsat は、ja ロケールでのみ動作が保証されています。
JFP は、国際化 SunOS で提供されているコード変換機能 iconv の日本語コードセットのサポートとして、この機能で使用する日本語モジュールを提供します。「日本語環境用 SunOS のコマンド」で紹介しているコード変換 (euctosj、sjtojis など) は、ベンダー定義文字やユーザー定義文字の変換をサポートしていません。変換対象にこのような定義文字が含まれる場合は、iconv を使用してください。コード変換機能 iconv(1) の使用法については第 6 章「日本語環境用 SunOS コマンド」を、iconv(3C) の使用法については『JFP 開発ガイド』を参照してください。
JFP は、各種日本語端末からの tty ベースの入出力に対して、コードセット変換を行う STREAMS モジュール群を提供します。
日本語端末から STREAMS モジュールを使用するときは、国際化された SunOS コマンドとして提供されている setterm(1) を使用します。STREAMS モジュールの使用法については、第 6 章「日本語環境用 SunOS コマンド」と、各コマンドのマニュアルページを参照してください。
JFP は、LP 印刷サービスを使用してドットマトリックス漢字プリンタ (EPSON VP-5085、 NEC PC-PR201)、日本語ページプリンタ (Canon LASERSHOT)、日本語 PostScript プリンタで日本語テキストを印刷するために、これらの変換フィルタ群を提供します。日本語プリンタの使用法については、第 4 章「日本語対応 SunOS のシステム環境設定」を参照してください。
JFP は、ATOK12、Wnn6、ATOK8、および cs00 による日本語入力機能を提供しています。詳細は、『日本語入力システムの概要とセットアップ』、『ATOK12 ユーザーズガイド』、『Wnn6 ユーザーズガイド』、『ATOK8 ユーザーズガイド』、『cs00 ユーザーズガイド』を参照してください。
プロセッサの種類 |
キーボードの種類 |
---|---|
SPARC |
日本語タイプ 4 キーボード 日本語タイプ 5 キーボード 日本語タイプ 6 キーボード |
IA |
106 キーボード J3100 キーボード |
JFP は、日本語のオンラインマニュアルを提供しています。ただし、すべてのオンラインマニュアルが日本語化されているわけではありません。
JFP では、JLE システム (SunOS 4.x に対する日本語処理機能) 上で作成されたアプリケーションを動作させるために、JLE バイナリ互換性サポートパッケージを提供しています。バイナリ互換性パッケージの一般的な注意事項および使用条件については、『バイナリ互換性ガイド』を参照してください。以下にパッケージ固有の注意事項を示します。
JLE ロケールデータベースは JFP のものとは互換性がありません。このため、JLE バイナリ互換性サポートパッケージでは /usr/lib/oldlocale に JLE 互換ロケールデータベースを置いています。 JLE アプリケーションは自動的にこのディレクトリを参照するようになっています。
この章では、JFP で提供している日本語ロケールの定義内容について説明します。
日本語 EUC は、EUC (Extended UNIX Code : 拡張 UNIX コード) に、以下の日本語文字集合を割り当てた文字集合およびエンコーディングを提供します。これは、ja または ja_JP.EUC ロケールで日本語を表現する文字コード体系として使われています。
表 2-1 日本語 EUC の文字集合
ただし、JIS で未定義となっている以下の領域には、ベンダー定義文字が割り当てられています。
JIS X 0208 13 区 | 特殊記号 |
JIS X 0212 83 区 - 84 区 | JIS X 0212 に含まれない IBM 拡張文字 |
日本語 EUC の場合、ベンダー定義文字とは、JIS X 0208 13 区文字未定義領域に割り当てられた特殊記号、ならびに JIS X 0212 83 区 - 84 区文字未定義領域に割り当てられた JIS X 0208 と JIS X 0212 のどちらにも含まれない IBM 拡張文字を指します。
PC 漢字コード (以降、PCK とします) は、一般に「シフト JIS (あるいは MS 漢字) コード」と呼ばれ、Microsoft が Windows 3.1 で規定したマイクロソフト標準キャラクタセットと同等の文字集合およびエンコーディングを提供するものです。ja_JP.PCK ロケールで日本語を表現する文字コード体系として使われています。
表 2-2 PCK の文字集合文字集合 (符号化文字集合) | 文字コード |
---|---|
JIS X 0201-1976 | |
機能キャラクタ集合 間隔文字 ローマ文字用図形キャラクタ集合 抹消文字 |
0x00 - 0x19 0x20 0x21 - 0x7e 0x7f |
JIS X 0201-1976 片仮名用図形キャラクタ集合 (文字未定義領域 E/0 - F/14 は含まない) |
0xa1 - 0xdf |
JIS X 0208-1990 (1 - 84 区) |
0x8140 - 0x9ffc 0xe040 - 0xeafc |
NEC 選定 IBM 拡張文字 | 0xed40 - 0xeffc |
ユーザー定義文字 (1 - 20 区) | 0xf040 - 0xf9fc |
IBM 拡張文字 | 0xfa40 - 0xfcfc |
ただし、JIS で未定義となっている以下の領域には、ベンダー定義文字が割り当てられています。
JIS X 0208 13 区 | 特殊記号 |
PCK の場合、ベンダー定義文字とは、JIS X 0208 13 区文字未定義領域に割り当てられた特殊記号、NEC 選定 IBM 拡張文字、ならびに IBM 拡張文字を指します。
UTF-8 は、Unicode のエンコーディングの1つであり、ASCII 部分 (0x00-0x7F) に関しては EUC または PCK と互換性を保ったまま、UCS-2 や UCS-4 の文字を使えるようにしたエンコーディングです。ja_JP.UTF-8 ロケールで文字を表現する文字コード体系として使われています。
表 2-3 UTF-8 の文字集合文字集合 (符号化文字集合) | 文字コード |
---|---|
Unicode 2.1 | 0x00 - 0xefbfbf (U+0000 - U+FFFF) |
ユーザー定義文字領域は、Unicode 2.1 で Private Use area に割り当てられている 0xee8080 - 0xefa3bf (U+E000 - U+F8FF) に該当します。日本語 EUC や PCK で表現できるすべての文字(ベンダー定義文字も含む)も Unicode 2.1 の中に含まれています。
U+XXXX の XXXX は Unicode 2.1 で表現しているコードを意味します。
Unicode 2.1 で定義された Surrogate Area (U+D800 - U+DFFF) はサポートされていません。
Solaris のフォントに制限があるため、日本語 UTF-8 では、 Unicode 2.1 で定義された一部の文字を表示できません。
JFP は、システム提供の日本語ロケールとして、日本語 EUC を扱う ja または ja_JP.EUC ロケール、PCK を扱う ja_JP.PCK ロケール、 UTF-8 を扱う Ja_JP.UTF-8 ロケールを提供します。また、日本語 Solaris 1.x システムとのネットワーク環境での共存のため 「japanese」というロケール名も ja と同等のロケールとして提供します。
「japanese」というロケール名は将来の Solaris リリースでは提供されません。「ja」という名前に変更することをお勧めします。
ロケールとは、特定の言語や文化、慣習のことです。日本語ロケールデータベースを作成すると、ロケールを切り替えるだけで、国際化されたシステムソフトウェアやアプリケーションを日本語環境に適応させることができます。
各日本語ロケールは、扱う文字コードが異なるだけで、ロケールとしての挙動は同じになるように定義されています。たとえば、ja または ja_JP.EUC ロケールで print という文字分類クラスに属する文字は、 ja_JP.PCK や ja_JP.UTF-8 ロケールでも同じ文字になります。ただし、PCK より日本語 EUC 、日本語 EUC よりUTF-8 の方が扱う文字が多いので、UTF-8 にしか存在しない文字の挙動は、ja_JP.UTF-8 ロケールにのみ定義されています。
特定の似かよった文字の集合 (クラスと呼びます) を作ることによって、プログラム上、そのクラスを意識するだけで (そのクラスにどの文字が含まれているかを意識することなく)、ロケールに依存しない国際化プログラミングが可能になります。日本語ロケールでは、以下のようなクラスが定義されています。
これらの文字分類クラスは、regex(5) をサポートしたコマンドであり、文字クラス表現の文字列としても wctype(3C) の文字クラスとしても使用可能です。なお、文字分類は LC_CTYPE カテゴリの値に影響を受けます。開発者として文字分類クラスを利用する場合は、『JFP 開発ガイド』を参照してください。
表 2-4 X/Open で規定された文字分類クラス名と日本語ロケールでの定義範囲
JIS X 0201 機能キャラクタ集合、ローマ文字用図形キャラクタ集合、片仮名用図形キャラクタ集合での XX/YY は XX 列 YY 行を意味します。 JIS X 0208、JIS X 0212 での XX/YY は XX 区 YY 点を意味します。
JIS X 0212 の文字に関しては、ja または ja_JP.EUC および ja_JP.UTF-8 ロケールのみ該当します。
ja_JP.UTF-8 ロケールでは、各クラスに、Unicode で定義された上記以外の文字も追加されています。
JIS X 0201 機能キャラクタ集合、ローマ文字用図形キャラクタ集合、片仮名用図形キャラクタ集合での XX/YY は XX 列 YY 行を意味します。 JIS X 0208、JIS X 0212 での XX/YY は XX 区 YY 点を意味します。
JIS X 0212 の文字に関しては、ja または ja_JP.EUC および ja_JP.UTF-8 ロケールのみ該当します。
日本語文字の照合順序は、文字コード値の順になります。ただし、ja_JP.PCK ロケールの場合、JIS X 0201 片仮名用図形キャラクタ集合は、JIS X 0201 ローマ文字用図形キャラクタ集合、抹消文字の次になるように修正されています。文字の照合順序は、LC_COLLATE カテゴリの値に影響を受けます。
JFP の提供する単語処理用共有オブジェクトは、単語処理用文字分類情報、詰め込み処理用単語分割・結合処理情報などをアプリケーションに提供します。これらの情報を利用するための API は今のところ公開されていません。
SunOS および JFP における日本語の日付と時刻の表示形式は、以下のとおりです。
表 2-6 日付と時刻の表示形式
SunOS /JFP での定義 |
|
---|---|
1月 |
|
2月 |
|
3月 |
|
4月 |
|
5月 |
|
6月 |
|
7月 |
|
8月 |
|
9月 |
|
10月 |
|
11月 |
|
12月 |
|
月の名前 (%B) |
1月 |
2月 |
|
3月 |
|
4月 |
|
5月 |
|
6月 |
|
7月 |
|
8月 |
|
9月 |
|
10月 |
|
11月 |
|
12月 |
|
(日) |
|
(月) |
|
(火) |
|
(水) |
|
(木) |
|
(金) |
|
(土) |
|
曜日の名前 (%A) |
日曜日 |
月曜日 |
|
火曜日 |
|
水曜日 |
|
木曜日 |
|
金曜日 |
|
土曜日 |
|
%H時%M分%S秒 |
|
%Y年%m月%d日 |
|
日付/時刻 (%c) |
%Y年%m月%d日 %a %H時%M分%S秒 |
午前 |
|
午後 |
|
午前/午後を伴う 12 時間表示形式(%r) |
%p%I時%M分%S秒 |
時刻の代替表示形式 (%EX) |
%H時%M分%S秒 |
日付の代替表示形式 (%Ex) |
%EY%m月%d日 |
日付および時刻の代替形式 (%Ec) |
%EY%m月%d日 %a %H時%M分%S秒 |
1927/01/01 - 1989/01/07 |
昭和%Ey年 |
1989/01/08 - 1989/12/31 |
平成元年 |
1990/01/01 - |
平成%Ey年 |
日付/時刻、長形式 (%C) |
%Y年%m月%d日 %a %H時%M分%S秒 %Z |
この章では、JFP によって日本語のサポートが可能になった SunOS に対して、必要に応じて行うさまざまな環境設定について説明します。ここでは、端末エミュレータなどの CUI 環境の設定方法について説明します。GUI については、第 7 章「GUI 環境の起動」と第 8 章「日本語 Solaris CDE と日本語 OpenWindows 環境に共通の機能」を参照してください。
国際化されたシステムプログラムやアプリケーションがどの言語および地域 (ロケール) を想定して動作するかは、一般に、ユーザーが特定の環境変数をどのように設定しているかによって異なります。日本語環境を想定して動作させるもっとも簡単な方法は、LANG という環境変数に ja または ja_JP.EUC (日本語 EUC を扱う) 、ja_JP.PCK (PCK を扱う) または ja_JP.UTF-8 (UTF-8 を扱う) ロケール名を設定することです。環境変数の設定方法は、使用しているシェルプログラムによって異なりますが、 csh (C シェル) の場合、以下のコマンドを実行します。
sun% setenv LANG locale1 |
1. locale には ja、ja_JP.EUC、ja_JP.PCK または ja_JP.UTF-8 を指定します。
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .login の中でこの設定を行うとよいでしょう。設定方法の例については、第 5 章「国際化 SunOS コマンドの利用」で説明します。sh (Bourne シェル) または ksh (Korn シェル) の場合は、以下のコマンドを実行します。
sun$ LANG=locale2 sun$ export LANG |
2. locale には ja、ja_JP.EUC、ja_JP.PCK または ja_JP.UTF-8 を指定します。
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行うとよいでしょう。設定方法の例については、第 5 章「国際化 SunOS コマンドの利用」で説明します。
上記の設定によって、ユーザーが実行する国際化プログラムは日本語環境を想定して動作するようになります。たとえば、メッセージや時刻が日本語で表示されたり、日本語文字の処理が正しく行われるようになります。ただし、英語は表示できても日本語を表示できないような条件下 (国際化されたウィンドウシステムが動いていない Sun ワークステーションの画面上など) では、日本語の文字は判読できません。このような場合は、一時的にロケールを C に設定し、英語のメッセージを表示させることをお勧めします。csh (C シェル) では以下のコマンドを実行します。
sun% setenv LANG C |
sh (Bourne シェル) または ksh (Korn シェル) では、以下のコマンドを実行します。
sun$ LANG=C sun$ export LANG |
ロケールの設定は、LC_CTYPE、LC_NUMERIC、LC_TIME、LC_COLLATE、LC_MONETARY、LC_MESSAGES、LC_ALL など、LANG よりも細かいカテゴリごとに行うこともできます。各ロケールカテゴリがプログラムの動作に与える影響については、各プログラムのリファレンスマニュアルを参照してください。
国際化された端末エミュレータウィンドウ (dtterm、shelltool、cmdtool など) や日本語端末上で正しく日本語の入出力を行うためには、 tty (端末ドライバ) が日本語の文字データを正しく透過させ、日本語の文字幅に応じた処理を正しく行わなくてはなりません。このためには、次のようにロケールの設定が完了している状態で setterm(1) コマンドを実行して初期化する必要があります。
csh の場合 :
sun% setenv LANG locale3 sun% setterm -x Codeset4 |
3. locale には ja、ja_JP.EUC、ja_JP.PCK またはja_JP.UTF-8 を指定します。
4. Codeset には JapanEUC、PCK または UTF-8 を指定します。
sh または ksh の場合 :
sun$ LANG= locale5; export LANG sun$ setterm -x Codeset6 |
5. locale には ja、ja_JP.EUC、ja_JP.PCK またはja_JP.UTF-8 を指定します。
6. Codeset には JapanEUC、PCK または UTF-8 を指定します。
日本語ロケール間でロケールを切り替える場合は、必ず端末設定も行なってください。使用する端末が同じでも、ロケールごとに使用する STREAM モジュールが異なるため、再度 setterm を実行しないと正しく表示できなくなります。
常に日本語端末環境を使用するユーザーは、ホームディレクトリの初期化ファイル(csh の場合には .login または .cshrc、sh の場合には .profile) の中でこの設定を行うとよいでしょう。次に ロケールの指定と sh の対応表を示します。
表 3-1 ロケールの指定と sh の対応ロケール | csh | sh、ksh |
---|---|---|
ja |
% setenv LANG ja % setterm -x JapanEUC |
% LANG=ja; export LANG % setterm -x JapanEUC |
ja_JP.eucJP |
% setenv LANG ja_JP.eucJP % setterm -x JapanEUC |
% LANG=ja_JP.eucJP; export LANG % setterm -x JapanEUC |
ja_JP.PCK |
% setenv LANG ja_JP.PCK % setterm -x PCK |
% LANG=ja_JP.PCK; export LANG % setterm -x PCK |
ja_JP.UTF-8 |
% setenv LANG ja_JP.UTF-8 % setterm -x UTF-8 |
% LANG=ja_JP.UTF-8; export LANG % setterm -x UTF-8 |
端末オプションの詳細は、第 6 章「日本語環境用 SunOS コマンド」と setterm(1) のマニュアルページを参照してください。
Solaris オペレーティング環境自体と、JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。たとえば、以下のコマンドがあります。
ls | |
---|---|
/usr/bin/ls | 国際化機能を持つ標準の ls コマンド |
/usr/ucb/ls | BSD 互換性パッケージの ls コマンド |
/usr/xpg4/bin/ls | XPG4 準拠の ls コマンド |
mailx | |
---|---|
/usr/bin/mailx | 標準の mailx コマンド |
/usr/SUNWale/bin/mailx | 国際化機能の拡張された mailx コマンド |
実行するコマンドのパスによっては、思い通りに国際化機能が利用できないことがあります。日本語環境で国際化機能を最大限に利用したい場合は、シェルのコマンド検索ディレクトリの優先順位を次のように設定します。なお、対応する /usr/xpg4/bin/<コマンド名> がないときは /usr/bin/<コマンド名> が XPG4 準拠になっています。
/usr/xpg4/bin > /usr/SUNWale/bin > /usr/bin > /usr/ucb |
設定方法は、ユーザーの使用しているシェルプログラムによって異なりますが、csh (C シェル) の場合、以下のように set コマンドを実行します。
sun% set path = (/usr/xpg4/bin /usr/SUNWale/bin /usr/bin /usr/ucb .) |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .cshrc の中でこの設定を行えます。.cshrc ファイルを編集して path パラメタを変更した後、すぐにその内容を有効にしたい場合は、次のように source コマンドを実行します。
sun% source .cshrc |
sh (Bourne シェル) または ksh (Korn シェル) の場合には、以下のようにパラメタ PATH を設定します。
sun$ PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:. sun$ export PATH |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行えます。
現在デフォルトで実行されるコマンドがどのディレクトリにあるかは、which(1) コマンドで確かめることができます。
前の項で述べたように、Solaris オペレーティング環境自体と、JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。これに伴って、オンラインマニュアルページについても、同名のエントリが複数の場所に存在することがあります。たとえば、以下のマニュアルページがあります。
ls | |
---|---|
/usr/share/man/man1/ls.1 | 国際化された標準の ls コマンド用 |
/usr/share/man/man1b/ls.1b | BSD 互換性パッケージの ls コマンド用 |
mailx | |
---|---|
/usr/share/man/man1/mailx.1 | 標準の mailx コマンド用 |
/usr/SUNWale/share/man/man1/mailx.1 | 国際化された mailx コマンド用 |
参照するマニュアルページのパスによっては、思い通りに国際化機能の情報が得られないことがあります。日本語環境で国際化機能を最大限に利用したい場合は、シェルのコマンド検索ディレクトリの優先順位とともにオンラインマニュアルページの検索パスの優先順位を次のように設定します。
/usr/SUNWale/share/man > /usr/share/man |
設定方法は、ユーザーの使用しているシェルプログラムによって異なります。
csh (C シェル) の場合は、次のように環境変数 MANPATH を設定します。
sun% setenv MANPATH /usr/SUNWale/share/man:/usr/share/man |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .cshrc でこの設定を行えます。
sh (Bourne シェル) または ksh (Korn シェル) の場合は、環境変数 MANPATH を次のように設定します。
sun$ MANPATH=/usr/SUNWale/share/man:/usr/share/man sun$ export MANPATH |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行えます。
ここではユーザーのホームディレクトリのシェルの初期化ファイル (.login、.cshrc、.profileなど) を利用して日本語環境用の設定を行う例を説明します。初期化ファイルの内容は個々のユーザーの必要に応じて変わるものであり、目的の達成方法も一つではありません。ここに挙げる例はあくまで参考であることに注意してください。
dtlogin からログインした場合、以下の初期化ファイルは (.cshrc を除く) 読み込まれません。このため、初期化ファイルの設定は Solaris CDE アプリケーションには反映されません。Solaris CDE アプリケーションの実行環境に環境変数などを反映させる方法については、第 7 章「GUI 環境の起動」を参照してください。
ユーザーのホームディレクトリの .login ファイルは、ユーザーが C シェル (csh) を使ってシステムに login したときに C シェルの初期化に使われます。一般に、環境変数の設定などは、このファイルで行います。詳細は、csh(1) を参照してください。
# The initial user defaults for csh. setenv LANG ja setterm -x JapanEUC if ( ! $?MANPATH ) then setenv MANPATH /usr/SUNWale/share/man:/usr/share/man endif |
最初の実行文で、環境変数 LANG が日本語ロケール名「ja」に設定されます。
"setterm -x JapanEUC" では、端末は日本語 EUC に設定しています。
次の if 文は、オンラインマニュアルページの検索パスを条件に応じて設定します。インストール時のパス設定、ソフトウェア製品の追加などに応じて、この設定内容を変更しなければならない場合があります。
ユーザーのホームディレクトリの .cshrc ファイルは、ユーザーが C シェル (csh) を起動したときに C シェルの初期化に使われます。.cshrc ファイルは、C シェルがログインシェルとして起動されたときにも .login に先立って実行されます。詳細は、csh(1) を参照してください。
set path=(/usr/xpg4/bin /usr/SUNWale/bin /usr/bin /usr/ucb .) if ($?prompt) setterm -x JapanEUC |
この例では、最初の行でシェル変数 path に コマンド検索パスの設定だけを行なっています。インストール時のパス設定、ソフトウェア製品の追加などに応じて、この設定内容を変更しなければならない場合があります。
次の行では、ロケールの設定を変えた後に C シェルが起動し直される場合などのため、"setterm -x JapanEUC" を実行しています。行の最初の if 文は、C シェルが端末以外の装置を標準入力として起動された場合に stty が実行されてエラーメッセージが表示されるのを防ぐためのものです。ただし、これは完全な解決策にはなりません。
ユーザーのホームディレクトリの .profile ファイルは、ユーザーが Bourne シェル (sh) または Korn シェル (ksh) を使ってシステムにログインしたときに、シェルのユーザー固有の初期化に使われます。詳細は、sh(1) を参照してください。
# The initial user defaults for sh. LANG=ja export LANG PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:. export PATH setterm -x JapanEUC if [ "$MANPATH" = "" ] then MANPATH=/usr/SUNWale/share/man:/usr/share/man export MANPATH fi ENV=$HOME/.kshrc export ENV |
この例では、環境変数 LANG でのロケール設定、環境変数 PATH でのコマンド検索パスの設定、tty のオプション設定が順次行われます。
"setterm -x JapanEUC" では、端末は日本語 EUC に設定しています。
if 文では、それぞれ条件に応じて環境変数 MANPATH が設定されます。インストール時のパス設定、ソフトウェア製品の追加などに応じて、この設定内容を変更しなければならない場合があります。
最後のパラメタ ENV は、Korn シェル (ksh) に対して起動時コマンド実行ファイル名を設定します。このパラメタ設定は、Bourne シェル (sh) に対しては特別な意味を持ちません。
Korn シェル (ksh) に対して起動時コマンドファイルを用意する場合、そのファイル名をパラメタ ENV に設定します。パラメタ ENV の設定例については、「.profile」を参照してください。Korn シェルがログインシェルとして起動されたときにも、Korn シェル起動時コマンドファイルは .profile のあとで実行されます。詳細は、ksh(1) のマニュアルページを参照してください。
export PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:. if expr "$-" : "i" > /dev/null; then setterm -x JapanEUC fi |
この例では、最初の行でパラメタ PATH にコマンド検索パスの設定だけを行なっています。インストール時のパス設定、ソフトウェア製品の追加などに応じて、この設定内容を変更しなければならない場合があります。
次の 3 行では、ロケールの設定を変えた後に Korn シェルを起動し直す場合などのため、"setterm -x JapanEUC" を実行しています。
if 文は、Korn シェルが端末以外の装置を標準入力として起動された場合に setterm が実行されてエラーメッセージが表示されるのを防ぐためのものです。ただし、これは完全な解決策にはなりません。
この章では、システムで定義済みの SunOS の日本語環境を、システム管理者が必要に応じて変更する場合の方法と注意事項を説明します。
ユーザーが個々のロケールを設定する場合と同様に、そのシステムのロケールも設定できます。このシステムロケールは、ユーザーがロケールを明示的に設定しないときのデフォルトロケールとして使われたり、ロケールに依存して機能するデーモンのロケールとして使われたりします。
インストール時に「言語とロケールの選択 (Select Language and Locale)」画面で選択したロケールが、システムロケールとして設定されます。システムロケールは以下のファイルで設定されます。このファイルの LANG の値を変更することによって、システムロケールを変更できます。詳細は、init(1M) を参照してください。
sun% more /etc/default/init : TZ=Japan LANG=ja |
JFP は、複数バイト言語国際化のために拡張された in.comsat (/usr/SUNWale/sbin/in.comsat) を提供しています。第 5 章「国際化 SunOS コマンドの利用」の 「メール到着の通知」の例のように、到着した日本語メールをコード変換して Solaris CDE や OpenWindows のコンソールウィンドウなどに表示するためには、以下のように install_comsat を実行する必要があります。
sun# /usr/SUNWale/sbin/install_comsat ja |
詳細は、install_comsat(1M) と inetd(1M) のマニュアルページを参照してください。install_comsat(1M)のマニュアルページを参照するには、環境変数 MANPATH または man(1) のオプション -M の引数に /usr/SUNWale/man が含まれている必要があります。
JFP は、LP 印刷サービスを使用して、ドットマトリックス漢字プリンタ (EPSON VP-5085 、 NEC PC-PR201)、日本語ページプリンタ (Canon LASERSHOT)、日本語 PostScript プリンタで日本語テキストを印刷するために、これらの変換フィルタ群を提供します。
JFP では、LP 印刷サービスを使用して、ドットマトリックス漢字プリンタ (EPSON VP-5085、 NEC PC-PR201)、日本語ページプリンタ (Canon LASERSHOT) で日本語テキストを印刷できます。
EPSON VP-5085 用のデータベースは EPSON ESC/P の ESC/P24-J84 に準拠したコントロールコード、NEC PR201 用のデータベースは NEC 201PL に準拠したコントロールコードを使用しています。このため、これらのコントロールコードをサポートする他のプリンタでも日本語テキストを印刷できます。
JFP では、日本語 dumb プリンタをサポートする目的で、以下のファイルを提供しています。
表 4-1 日本語 dumb プリンタのサポート用に提供されるファイルプロセッサの種類 | キーボードの種類 |
---|---|
/usr/share/lib/terminfo/c/canon-ls-a408 | Canon LASERSHOT A408 用の terminfo データベース (Canon LASERSHOT の LIPS に準拠) |
/usr/share/lib/terminfo/e/epson-vp5085 | EPSON-VP5085 用の terminfo データベース (EPSON ESC/P の ESC/P24-J84 に準拠) |
/usr/share/lib/terminfo/n/nec-pr201 | NEC PR201 用の terminfo データベース (NEC 201PL に準拠) |
/usr/lib/lp/text/jprconv | 日本語テキスト印刷フィルタ |
/usr/lib/lp/text/jprconv.conf | 日本語テキスト印刷フィルタ用設定ファイル |
/etc/lp/fd/jprconv.fd | 日本語テキスト印刷フィルタ記述子ファイル |
/usr/lib/lp/model/jstandard | 日本語プリンタ・インタフェースプログラム |
日本語プリンタ・インタフェースプログラムでは、標準のインタフェースプログラムのほか表 4-2 に示すプリンタ固有のオプションが追加されています。その他のオプションは標準インタフェースプログラムと同じです。詳細は、lp(1) のマニュアルページを参照してください。
表 4-2 lp のプリンタ固有オプション
オプション |
内容 |
---|---|
x=cols |
左マージンを cols カラムに設定する |
landscape |
用紙を横長にして印刷する (Canon LASERSHOT にのみ有効) |
プリンタ固有のオプションの使用例を以下に示します。
sun% lp -o x=30 textfile.txt sun% pr -2 -l46 -w170 -t textfile.txt | lp -o nobanner -o landscape |
以下のフィルタ固有のオプションが lp を通して利用可能です。
表 4-3 jprconv フィルタ固有のオプション
オプション |
内容 |
---|---|
-y PCK |
指定したファイルの文字コードを PCK に指定 |
-y eucJP |
指定したファイルの文字コードを eucJP に指定 |
-y UTF-8 |
指定したファイルの文字コードを UTF-8 に指定 |
フィルタ固有のオプションの使用例を以下に示します。
sun% lp -y PCK textfile.pck |
日本語テキスト印刷フィルタを使用する場合、次の制限事項があります。
制限事項
PostScript ファイルを印刷できない
lp のプリンタ固有オプションでは、length、width、lpi、および cpi がサポートされない
UTF-8 では、日本語 EUC で表現できる文字のみ印刷可能 (ただしユーザー定義文字は除く)
JFP では、日本語 PostScript プリンタで日本語テキストを印刷できます。日本語 PostScript プリンタに日本語テキストを印刷する方法は 2 通りあります。1 つは、jtops(1) を使ってクライアント側で PostScript に変換し、プリンタサーバーに渡す方法であり、もう 1 つは、サーバー側で変換する方法です。ここでは、サーバー側で変換する場合のプリンタの設定方法について説明します。
JFP は、日本語 PostScript プリンタをサポートするために以下のファイルを提供します。
表 4-4 日本語 PostScript プリンタのサポート用に提供されるファイル
/usr/share/lib/terminfo/c/canon-ls-a408 |
Canon LASERSHOT A408 用の terminfo データベース (Canon LASERSHOT の LIPS に準拠) |
/usr/lib/lp/postscript/jpostprint |
日本語テキストを日本語 PostScript に変換するフィルタ |
/usr/lib/lp/postscript/jpostprint.conf |
上記フィルタの設定ファイル |
/etc/lp/fd/jpostprint.fd |
上記フィルタの記述子ファイル |
lp では、以下のフィルタ固有のオプションを利用できます。
表 4-5 jpostprint フィルタ固有のオプション
オプション |
内容 |
---|---|
-o length=len |
1 ページの行数を len に指定 |
-P page-list |
page-list で指定するページ範囲を印刷 |
-y group |
1 ページあたり 2 個の論理ページで印刷 |
-y group=n |
1 ページあたり n 個の論理ページで印刷 |
-y portrait |
縦長で印刷 |
-y landscape |
横長で印刷 |
-y magnify=n |
n 倍に拡大して印刷 |
-y PCK |
指定したファイルの文字コードを PCK に指定 |
-y eucJP |
指定したファイルの文字コードを eucJP に指定 |
-y UTF-8 |
指定したファイルの文字コードを UTF-8 に指定 |
フィルタ固有のオプションの使用例を以下に示します。
sun% lp -P 2,3 -y PCK textfile.pck |
UTF-8 では、日本語 EUC で表現できる文字のみ印刷可能 (ただしユーザー定義文字は除く)
日本語テキストを印刷するには、プリンタを正しく追加する必要があります。プリンタの追加方法は、ローカルプリンタとして追加するかリモートプリンタとして追加するかによって異なります。
まず、各プリンタに共通する手順を説明します。
IA システム上にプリンタデバイスが存在しない場合は、『Solaris 8 デバイスの構成 (Intel 版)』を参照して、あらかじめプリンタデバイスを正しく作成しておく必要があります。
システムの電源を切ります。
システムとプリンタをプリンタケーブルで接続します。
システムの電源を入れ、Solaris を起動します。
スーパーユーザーになります。
まだ起動していなければ、Solaris CDE または OpenWindows を起動します。
次に、各プリンタに固有の手順を説明します。
この説明では、プリンタ名を vp5085、プリンタタイプを epson-vp5085、デバイス名を /dev/term/a と仮定しています。
以下に手順を示します。
dtterm などの端末エミュレータを起動し、以下を実行します。
sun# lpadmin -p vp5085 -v /dev/term/a -T epson-vp5085 -I None ¥ -i /usr/lib/lp/model/jstandard sun# lpadmin -d vp5085 sun# accept vp5085 sun# enable vp5085 |
なお、terminfo (-T) と content (-I) は使用するプリンタによって異なります。以下の表を参考にしてください。
表 4-6 プリンタタイプコントロールコード | terminfo (-T) | content (-I) |
---|---|---|
Canon LASERSHOT | canon-ls-a408 | None |
EPSON ESC/P | epson-vp5085 | None |
NEC 201PL | nec-pr201 | None |
日本語 PostScript | PS | postscript |
次のように入力して、印刷フィルタを登録します。
sun# cd /etc/lp/fd sun# lpfilter -f jprconv -F jprconv.fd |
sun# cd /etc/lp/fd sun# lpfilter -x -f postprint sun# lpfilter -f jpostprint -F jpostprint.fd |
必要に応じて、インタフェースプログラムの構成を変更します。
sun# cd /etc/lp/interfaces sun# vi vp5085 |
たとえば、常にバナーページを印刷しない場合は、インタフェースプログラムを編集して、「Default nobanner」の「nobanner="no"」の部分を「nobanner="yes"」に変更します。
: # # Default nobanner # nobanner="no" : banner page will be printed as default # nobanner="yes" : banner page will not be printed as default # nobanner="yes" : |
手順 1 でデバイス名 (lpadmin コマンドのオプション -v の引数) として /dev/bpp0 以外を指定した場合は、次のように入力して、stty オプションを設定します。
sun# lpadmin -p vp5085 -o "stty=-opost" |
システムをリブートします。
sun# sync;sync;sync;reboot |
dtterm などの端末エミュレータを起動し、以下を実行します。
sun# lpadmin -p vp5085 -s hiraki¥!vp5085 |
/etc/printers.conf ファイルを確認します。
printers.conf ファイルの該当するサーバー部分に以下のように「Solaris」が入っていることを確認します。
vp5085:¥ :bsdaddr=hirari,vp5085,Solaris: |
以上の手順を終了すると、lp コマンドを使用して、追加したリモートプリンタに出力できます。
ネットワークプリンタとして登録します。
以下の例は、日本語 PostScript プリンタをネットワーク経由で接続した場合の例です。プリンタ側には、あらかじめ以下のように設定されていると仮定します。
Host Name : nwpr2 Printer Name : pspr |
sun# lpadmin -p pspr -I postscript -T PS -v /dev/null ¥ -i /usr/lib/lp/model/netstandard -o dest=nwpr2:pspr ¥ -o protocol=bsd sun# accept pspr sun# enable pspr |
次のように入力して、テキストファイル印刷フィルタを登録します。
sun# cd /etc/lp/fd sun# lpfilter -x -f postprint sun# lpfilter -f jpostprint -F jpostprint.fd |
必要に応じて、インタフェースプログラムの構成を変更します。
sun# cd /etc/lp/interfaces sun# vi vp5085 |
たとえば、常にバナーページを印刷しない場合は、インタフェースプログラムを編集して「Default nobanner」の「nobanner="no"」の部分を「nobanner="yes"」に変更します。
: # # Default nobanner # nobanner="no" : banner page will be printed as default # nobanner="yes" : banner page will not be printed as default # nobanner="yes" : |
システムをリブートします。
sun# sync;sync;sync sun# reboot |
JFP では、日本語 dumb プリンタや日本語 PostScript プリンタでの日本語テキストの印刷をサポートしています。日本語テキストには、JIS X 0212、ユーザー定義文字、ベンダー定義文字を含めることができます。これらの文字を印刷するためには、そのフォントをプリンタサーバー上に正しくインストールする必要があります。ここでは、これらのフォントのインストール方法について説明します。
ユーザー定義文字とベンダー定義文字の定義領域については、第 2 章「日本語ロケール」を参照してください。また、ユーザー定義文字の作成方法については、第 14 章「ユーザー定義文字の登録 (Solaris 外字ツール)」を参照してください。
ユーザー定義文字のフォントとしては sdtudctool(1) で出力される PCF フォント、JIS X 0212 とベンダー定義文字のフォントとしては SUNWjxcft に含まれる24 ドットの PCF フォントだけが使用できます。
プリンタサーバー上で次のように操作します。
JIS X 0212 とベンダー定義文字フォントのインストール
SUNWjxcft パッケージがインストールされているかどうかを確認します。
sun# pkginfo SUNWjxcft |
SUNWjxcft パッケージがインストールされている場合は、次のようなメッセージが表示されます。
SUNWjxcft Japanese X Window System common (not required) fonts |
ここで SUNWjxcft が見つからなかった場合は、次のコマンドを実行します。
sun# pkgadd -d <Solaris CD>/Product SUNWjxcft |
上記 <Solaris CD> には、Solaris CD のインストールイメージがあるディレクトリを指定します。
ユーザー定義文字フォントのインストール
sdtudctool でユーザー定義文字フォントを作成します。
作成したフォントをインストールします。
sun% cd $HOME/.Xlocale/$LANG/fonts/UDC/Bitmaps sun% su sun# mkdir -p /usr/openwin/lib/locale/$LANG/X11/fonts/UDC/Bitmaps sun# cp UDC24.pcf /usr/openwin/lib/locale/$LANG/X11/fonts/UDC/Bitmaps |
ユーザー定義文字のフォントとしては sdtudctool(1) で出力される Type1 フォント、 JIS X 0212 とベンダー定義文字のフォントとしては SUNWjcs3f に含まれる Type1 フォントだけが使用できます。
プリンタサーバー上で次のように操作します。
JIS X 0212 とベンダー定義文字フォントのインストール
SUNWjcs3f パッケージがインストールされているかどうかを確認します。
sun# pkginfo SUNWjcs3f |
SUNWjcs3f パッケージがインストールされている場合は次のようなメッセージが表示されます。
SUNWjcs3f Japanese JIS X0212 Type1 fonts for printing |
ここで SUNWjcs3f が見つからなかった場合は、次のコマンドを実行します。
sun# pkgadd -d <Solaris CD>/Product SUNWjcs |
上記 <Solaris CD> には、Solaris CD のインストールイメージがあるディレクトリを指定します。
ユーザー定義文字フォントのインストール
sdtudctool でユーザー定義文字フォントを作成します。
作成したフォントをインストールします。
sun% cd $HOME/.Xlocale/$LANG/fonts/UDC/Type1 sun% su sun# mkdir -p /usr/openwin/lib/locale/$LANG/X11/fonts/UDC/Type1 sun# cp UDC*.pfa /usr/openwin/lib/locale/$LANG/X11/fonts/UDC/Type1 |
jpostprint を起動し、クライアント側で PostScript ファイルに変換することにより、プリンタサーバーとは異なった独自の外字を印刷することもできます。
sun% /usr/lib/lp/postscript/jpostprint <テキストファイル名> |
この場合は、$HOME/.Xlocale/$LANG/fonts/UDC/Type1 にある外字フォントが使用されます。
プロセッサの種類 | キーボードの種類 |
---|---|
SPARC |
日本語タイプ 4 キーボード 日本語タイプ 5 キーボード 日本語タイプ 6 キーボード |
IA |
106 キーボード J3100 キーボード |
日本語タイプ 5 キーボードの制限事項については、U.S. タイプ 5 キーボードと同じです。
日本語キーボードについては、 SunOS の「各国語キーボードサポート」機能により、自動的に対応するキーテーブルが読み込まれます。
SunOS 上の多くのコマンドは、複数バイト文字データを適切に処理できるよう国際化されています。この章では、代表的なコマンドをいくつか取り上げ、日本語環境での利用方法について説明します。
この章で説明されていない事項およびコマンドについては、それぞれのコマンドのマニュアルページなどを参照してください。複数バイト言語を対象に国際化されているコマンドのマニュアルページでは、一般に、ENVIRONMENT (環境) の項に LC_* 環境変数に応じた動作の変化が記述されています。
vi は SunOS 上の標準的なテキストエディタです。ウィンドウ環境への依存性がなく、広範囲のファイルタイプに対応しているため、さまざまな端末で多目的に利用できます。
この節では、vi を例として、SunOS で国際化されているコマンドの日本語環境での使い方を説明します。vi の機能全般については、『OpenWindows ユーザーズガイド (上級編)』や vi(1) のマニュアルページを参照してください。また、実際の日本語入力方法については、『ATOK12 ユーザーズガイド』、『Wnn6 ユーザーズガイド』、『ATOK8 ユーザーズガイド』、『cs00 ユーザーズガイド』を参照してください。
この項の説明で、 "「xxx」を入力してください" という表現は、xxx が日本語の場合は日本語を入力し、無変換の状態に戻すまでを指します。
多くの SunOS コマンド同様、vi は日本語のファイル名をサポートします。例として、「コロンブスのジパング」という名前のファイルを vi で編集してみましょう。
sun% vi コロンブスのジパング |
「コロンブスのジパング」というファイルがすでにあれば、vi でそのファイルを開くことができます。この例ではファイルは存在しないものとします。
vi の編集画面が現われます。
_ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ "コロンブスのジパング" [新規ファイル] |
以降、vi の画面での下線マーク「 _ 」は、カーソルの位置を表します。
多くの SunOS コマンドと同様に、vi では、"[新規ファイル]" のようにメッセージを日本語で表示できます。このメッセージ自体は、JFP が提供しています。JFP をインストールしたシステムでメッセージが日本語で表示されないときは、LC_MESSAGES のロケールカテゴリが、環境変数 LANG、LC_MESSAGES または LC_ALL によって日本語ロケールに設定されていない可能性があります。ロケールを正しく設定し直してください。詳細は、第 3 章「日本語対応 SunOS のユーザー環境設定」の 「環境変数によるロケールの設定」を参照してください。
vi に慣れるまでは、動作モードを表示する showmode という設定が役立ちます。showmode を設定するには、コマンドモードで次のように「:set showmode」と入力します。
_ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ :set showmode |
これで、その時々の動作モードが画面最下部 (ステータス行) の右側に表示されるようになります。たとえば、ここで i キーを入力すると、vi は挿入 (insert) モードに入ります。このとき、ステータス行には次のように表示されます。
_ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ :set showmode 挿入モード |
JFP の提供する日本語入力機能などを利用して日本語のテキストを入力していくと、 vi はこれを編集画面に表示します。端末環境では、一般に、日本語の 1 文字は ASCII の 2 文字 (2 カラム) 分の表示幅を持ちます。1 行が画面の幅を超えた場合は、画面の最後のカラムに日本語文字が入るかどうかによって、行の折り返し処理が行われます。
1492年、クリストファー・コロンブスは、スペイン女王イザベルの援助を受け、黄金に輝 く地、ZIPANGU(日本)を求めてスペインのパロスを出発した。3箇月後、西イン‾ ド諸島サンサルバドルに到着した彼は、ここが東洋であり、南にはジパングがあると信じ きっていた。 _ ‾ ‾ ‾ ‾ ‾ ‾ ‾ :set showmode 挿入モード |
上の例では、画面 2 行目の最後のカラムに「ド」の文字がかかりますが、行内には収まりません。この ような場合、2 行目の行末の 1 カラムはスキップされ、「ド」の文字が次の行に折り返されます。2 行目の行末の「‾」は、この処理を示しています。環境変数 MC_FILLER を使って、「‾」を任意の ASCII 文字に変更することもできます。
本文では、現在のカーソル位置を、全角文字の上にある場合は全角アンダースコア (_)、半角文字の上にある場合は半角アンダースコア (_) で表示していますが、これは使用する端末によって変わります。
たとえば、次のように設定します。
sun% setenv MC_FILLER ' ' |
この設定をしたあと、vi を起動して同じテキストを入力すると、スキップを示す文字がスペースに変わります。
1492年、クリストファー・コロンブスは、スペイン女王イザベルの援助を受け、黄金に輝 く地、ZIPANGU(日本)を求めてスペインのパロスを出発した。3箇月後、西イン ド諸島サンサルバドルに到着した彼は、ここが東洋であり、南にはジパングがあると信じ きっていた。 _ ‾ ‾ ‾ ‾ ‾ ‾ ‾ :set showmode 挿入モード |
多くの SunOS コマンドと同様に vi コマンドは 1 文字単位の処理を複数バイト文字にも適用できるように国際化されています。置き換え、削除、大文字・小文字変換を例にとって見てみましょう。
まず、「3箇月後」の「3」(ASCII) をコードセット 1 の「3」に置き換えてみます。Esc キーを入力してコマンドモードに移り、カーソルキーを使ってカーソルを「3」の位置に合わせます。次に r キーを入力すると、vi は 1 文字を置き換えるモードになります。
ここで「3」を入力すると、「3」はコードセット 1 の「3」に置き換えられ、vi はコマンドモードに戻ります。
次に「クリストファー」の最後の 1 文字「ー」を削除してみます。カーソルを削除したい「ー」に移動し x キーを入力すると、「ー」の 1 文字が削除され、画面は次のようになります。
さらに 2 行目の文字列、「ZIPANGU」の「IPANGU」を小文字に変換してみます。カーソルを「ZIPANGU」の「I」に移動して「6‾」と入力します。これにより、1 文字を大文字・小文字変換して次の文字に移動する操作が 6 回繰り返され、画面は次のように変わります (‾ キーを 6 回入力しても同じです)。
SunOS 上のいくつかのコマンドでは、単語間の区切りとして空白を使用しない言語用に拡張された、単語の識別処理がサポートされています。
vi では、コマンドモードで w (word) キーを入力することにより、カーソルが日本語の単語識別用文字分類に基づいて次の単語の先頭に移動します。同様に、b (back) キーは前にある単語の先頭に、e (end) キーは現在カーソルのある単語の末尾にカーソルを移動します。
「スペイン女王」の「ス」にカーソルがある状態で w キーを 5 回入力すると、カーソルは日本語の単語識別用の文字分類に基づいて「女王」、「イザベル」、「の」、「援助」、「を」の単語の先頭に次々に移動します。
さらに b キーを 3 回入力すると、カーソルが 3 単語分戻り、「イザベル」の先頭に移動します。
ここで、カーソル以降の 1 単語を書き換える cw コマンドを実行してみましょう。「Zipangu」の「Z」にカーソルを移動して、cw と入力すると画面は次のようになり、vi は「Zipangu」に置き換わる単語の入力を待ちます。
「ジパング」と入力して Esc キーを入力すると、「Zipangu」が「ジパング」に置き換えられます。
同様に、このような単位の単語を削除することもできます。カーソルキーを使ってカーソルを「イザベル」の「イ」に移動し dw と入力すると、カーソル位置から現在の単語の最後の「ル」までが削除されます。
入力テキストの改行は、Return キーを入力することによって任意に行えますが、vi の set コマンドと wm オプションを使用すると、行の長さを自動的にコントロールできます。さらに、日本語環境では、原則として日本語文字 1 文字が改行の単位とみなされます。たとえば、次の例では画面の幅が ASCII の 80 カラム分なので、コマンドモードで「:set wm=58」を入力することにより、画面右側に 58 カラムのマージン (余白) が確保され、行の長さは 80-58=22 カラム以下になるようにコントロールされます。
コマンドモードで o (open) キーを入力してオープンモードに移り、入力を次のように続けます。
「コロンブスは、その後もジパングをめざし、数回の航海でキューバ島やイスパニオラ島を発見した。しかし、最後までジパングを見つけることはできなかった。」
Return キーを入力せずに続けて入力しても、テキストは自動的に次のように改行されます。
ここで、「スパニオラ島を発見し」の行が次の行より 1 文字分短く改行されるのは、テキストを清書するときと同様に禁則処理が働いているためです。
次に行を連結してみましょう。Esc キーを入力してコマンドモードに移り、「コロンブス...」の行にカーソルを移動します。
ここで J (Shift-j) キーを入力すると、現在の「コロンブス...」の行に次の「ジパング...」の行が連結されます。
このように日本語文字の行の連結の場合には、英語の行の連結の場合とは違い、スペースが挿入されず、改行の場合と同様に自然な日本語処理が行えます。日本語固有のこれらの単語処理は、JFP の提供する各国語化によって実現されています。 [国際化された単語処理になじみのない既存の vi のユーザーは、これらの機能にとまどいを覚えるかも知れません。そのような場合には、環境変数 MB_CONSERVATIVE_EDIT を設定してください。テキストの清書に準じた日本語単語処理は vi に適用されなくなり、vi は日本語に対しても英語と同様の動作をするようになります。]
いくつかの SunOS コマンドと同様、vi でも日本語文字を含む文字列パターンの処理がサポートされます。コマンドモードで「/」キーを入力すると画面の最下行に「/」が表われ、検索する文字列を待つ状態になります。ここで、検索する文字列として「コロンブス」と入力してみましょう。
Return キーを入力すると、カーソルは先頭行の「コロンブス」の先頭に移動します。
n (next) キーを入力すると、カーソルは画面 2 段落目の最初の行の「コロンブス」の先頭に移動します。
次に、1 行目の ASCII の英数字を含む「1492年」の文字列をコードセット 1 の「1492年」に変更してみます。ここでは、正規表現を使って「1492年」を「...2 年」と指定することにします。
「:%s/...2年/1492年/g」と入力します。
Return キーを入力すると文字列が置き換えられ、画面は次のようになります。
ファイルの編集後、コマンドモードで (動作モード表示は消えます)、: (コロン) に続けて w (write) キーを入力します。入力した「:w」の文字列は画面最下行 (ステータス行) に表示されます。ここで Return キーを入力すると、ファイル名、行数、バイト数が表示され、ファイルが保存されます。
ファイルを変更していない状態またはファイルの保存後に vi を終了するときは、コマンドモードで : (コロン) キーのあとに q (quit) キーを入力します。ファイルの保存と同時に vi を終了するときは、wq を入力します。変更したファイルを保存せずに q キーを入力すると、次のような警告が出されます。
1. この行は反転表示されます。
警告を無視して vi を終了する場合は、q! または quit! と入力します。
SunOS 上では、国際化された man コマンドと nroff およびその関連コマンドにより、日本語のオンラインマニュアルページを参照できます [ただし、troff の国際化は行われていないため、man コマンドの -t オプションを日本語マニュアルページの troff 出力に使うことはできません。 ] 。日本語のオンラインマニュアルページとそのマクロパッケージは、JFP によって提供されます。
環境変数 LC_MESSAGES が日本語ロケールに設定されているか、LC_MESSAGES が設定されておらず LANG が日本語ロケールに設定されていれば、man コマンドで指定されたマニュアルページが日本語で存在している限り、日本語のマニュアルページが表示されます。例として、dumpcs(1) のマニュアルページを参照してみましょう。次のように入力します。
sun% man dumpcs マニュアルを清書中です。しばらくお待ちください... |
しばらくすると dumpcs(1) の日本語マニュアルページが表示されます。
マニュアルを清書中です。しばらくお待ちください... 終了 dumpcs(1) ユーザコマンド dumpcs(1) 【名前】 dumpcs - 現在のロケールのコードセット一覧表を表示 【形式】 dumpcs [ -0123vw ] 【機能説明】 dumpcs は、ユーザの現在のロケールに対応するコードセットの印 --継続--(9%) |
一時的に英文のマニュアルページを参照したい場合には、env(1) コマンドを使い、「env LANG=C man dumpcs」と入力します。
sun% env LANG=C man dumpcs Reformatting page. Wait... |
Reformatting page. Wait... done dumpcs(1) USER COMMANDS dumpcs(1) NAME dumpcs - show the codeset table for the current locale SYNOPSIS dumpcs [ -0123vw ] DESCRIPTION dumpcs shows a list of printable characters for the user's --More--(9%) |
和文と英文のマニュアルページを両方とも頻繁に参照する場合は、"env LANG=C man" の部分を C シェルの別名 (alias) として登録しておくとよいでしょう。
オンラインマニュアルは、システムの出荷時には個々のマニュアルページにより、sgml(5) の形式、または nroff(1) のソース形式で提供されます。catman(1M)コマンドによって、これらのマニュアルページをあらかじめ清書しておくと、man(1M) コマンドによる表示の際の清書作業にかかる時間を節約できます。ただし、この処理を行うとディスクスペースの消費量が増えることに注意してください。
また、catman コマンドは、whatis(1) および apropos(1) コマンドによって検索されるシステム機能の要約情報のデータベースファイル windex を作成します。-n オプションを指定すると、このデータベースは作成されません。また -w オプションを使うと、このデータベースの作成のみが行われます。catman コマンドは、常に英語のマニュアルページを清書します。それに加え、ユーザーが現在使用しているロケール用のマニュアルページがある場合は、そのロケールのマニュアルページも清書します。たとえば、オンラインマニュアルページのルートディレクトリが /usr/share/man であり、 catman を実行するユーザーの現在のロケールが ja の場合には、次のマニュアルページがすべて清書されます。
/usr/share/man/ja/sman<n>/* (ja ロケール用の SGML マニュアルページ) /usr/share/man/ja/man<n>/* (ja ロケール用の nroff マニュアルページ) /usr/share/man/sman<n>/* (英語の SGML マニュアルページ) /usr/share/man/man<n>/* (英語の nroff/troff マニュアルページ)
コマンドの機能の要約文だけを見たい場合には、whatis コマンドを使います。環境変数 LC_MESSAGES が日本語ロケールに設定されている場合、または、LC_MESSAGES は設定されていないが LANG が日本語ロケールに設定されており、whatis コマンドで指定されたマニュアルページが日本語で存在し、その情報を含む windex データベースが作られている場合は、日本語のコマンド機能要約を次のように表示できます。
sun% whatis dumpcs dumpcs dumpcs (1) - 現在のロケールのコードセット一覧表を表示 sun% |
whatis とは逆に、コマンド機能要約文中のキーワードからコマンド名を探したいときには apropos コマンドを使用できます。環境変数 LC_MESSAGES が日本語ロケールに設定されているか、LC_MESSAGES が設定されておらず LANG が日本語ロケールに設定されており、apropos コマンドで指定されたマニュアルページが日本語で存在し、その情報を含む windex データベースが作られていれば、日本語のコマンド機能要約を次のように表示できます。
sun% apropos コードセット一覧表 dumpcs dumpcs (1) - 現在のロケールのコードセット一覧表を表示 sun% |
JFP は、複数バイト言語国際化のために拡張された mailx (/usr/SUNWale/bin/mailx) を提供しています。以降、簡単な日本語メールの送受信を例にして、mailx の使い方とコード変換について説明します。
説明の中で、いくつかの mailx のコマンドと変数が登場しますが、それらの詳しい使い方については、国際化のために拡張された mailx(1) のマニュアルページまたは『OpenWindows ユーザーズガイド (上級編)』を参照してください。
まず、第 3 章「日本語対応 SunOS のユーザー環境設定」の 「コマンド検索パスの設定」を参考にして、/usr/SUNWale/bin/mailx を起動するように設定します。以下に述べるコード変換は、LC_CTYPE のロケールが環境変数 LANG または LC_CTYPE を介してja または japanese に設定されている場合に行われます。また、環境変数 LC_MESSAGES が ja または japanese に設定されている場合、mailx からの警告メッセージなどは日本語になります (メッセージ自体は JFP が提供します)。
メールを送るときは、mailx の引数に送り先のユーザー名を指定します。たとえば、grape というユーザーにメールを送る場合は、次のように指定します。
lemon% mailx grape Subject: |
mailx は Subject: の入力を要求してきます。Subject: にメールの用件を入力した後、メールのメッセージ本文を入力します。JFP の提供する日本語機能を利用して、日本語のメッセージを入力できます。
lemon% mailx grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 |
メッセージをテキストエディタを使って作成することもできます。次のように ‾v と入力すると vi が起動します。起動するエディタは VISUAL 変数で指定します。デフォルトは vi です。mailx の変数は、mailx の起動中でも、起動ファイル (通常、ユーザーのホームディレクトリにある .mailrc) 内で設定できます。シェルの変数としても設定できますが、mailx を起動中に指定した値や起動ファイル内に指定した値が優先されます。
Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 ‾v |
‾v と入力すると、vi の画面に切り替わります。
To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 ‾ ‾ ‾ ‾ ‾ ‾ ‾ "/tmp/Re8570" 7 行、121 バイト |
ここで、日本語を追加入力します。
To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ‾ ‾ ‾ ‾ ‾ ‾ ‾ ‾ :wq |
vi を終了すると元の mailx に戻りますが、画面には vi での編集イメージが残っています。作成したメッセージを始めから見たい場合は、‾p と入力してメッセージを再表示します。メッセージのサイズが大きいと画面が流れてしまい、内容をゆっくり読むことができません。これを防ぐためには、crt 変数と PAGER 変数をあらかじめ設定しておき、ページごとに表示させるようにします。たとえば、mailx コマンド起動中に以下のように設定します。
? set crt=20 ? set PAGER=/usr/bin/more |
行頭の ? は mailx からのプロンプトです。
この設定を、ユーザーのホームディレクトリにある .mailrc の中であらかじめ記述しておくと、mailx 起動時に常に実行されるので便利です。
‾p ------- メッセージの内容: To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 (つづく) |
作成したメールは、行の先頭に「 . 」(ピリオド) を入力するか、CTRL-D を入力すると送信されます。mailx は終了してシェルに戻ります。メールの作成は日本語 EUC で行われてきましたが、送信時は 7 ビット JIS コードに変換されます。
‾p ------- メッセージの内容: To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 (つづく) . 作成終了 lemon% |
作成の途中でメール送信を中止したいときは、割り込みキー (通常、CTRL-C) を入力します。割り込みキーを連続して 2 回入力すると、メッセージの作成を中止し、シェルに戻ります。途中まで作成されていたメッセージの内容は、dead.letter と呼ばれるファイル (あらかじめ設定されていない場合はユーザーのホームディレクトリにある dead.letter) に日本語 EUC で確保されます。
lemon% mailx grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。^C (割り込み -- メッセージ送信をやめるにはもう一度) ^C"/home/garden/lemon/dead.letter" 4/63 lemon% |
あらかじめ record 変数が設定されていると、送信するメッセージが record 変数で指定したフォルダに保存されます。record 変数は、デフォルトでは設定されていません。また、record 変数が設定されている場合に、mailx の変数 folderconv が設定されていると、メッセージは日本語 EUC で保存され、設定されていないと転送時の変換イメージ (7 ビット JIS コード) で保存されます。folderconv はデフォルトで設定されています。たとえば、record フォルダが ‾/.record の場合、以下のようにして、すでに送信したメッセージを参照できます。
lemon% mailx -f ‾/.record mailx version ALE5.0 Mon Sep 12 11:09:29 JST コマンドの概要は ? を タイプしてください。 "+.record": 2 個のメッセージがあります。 >O 1 lemon Tue Sep 29 21:33 13/249 Excursion O 2 lemon Tue Sep 29 21:47 15/245 Next Lecture ? |
行の先頭の ? は mailx からのプロンプトです。現在 2 個のメッセージがあります。先程転送したメール (Subject: Next Lecture) は 2 番目にあります。メッセージを読むコマンドはいくつかありますが、ここではメッセージ番号をそのまま入力する方法で実行します。
? 2 Message 2: From lemon Tue Sep 29 21:47:01 1992 To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ? lemon% |
今度は、先程ユーザー lemon が送ったメールをユーザー grape 側から読んでみます。メールボックスに届いたメールを読むには、mailx を引数なしで起動します。メールボックスにメールが届いていると、次のように表示されます。なお、この場合も LC_CTYPE および LC_MESSAGES のロケールが、環境変数 LANG、または 環境変数 LC_CTYPE および LC_MESSAGES を介して ja または japanese に設定されているものとします。
grape% mailx mailx version ALE5.0 Mon Sep 12 11:09:29 JST コマンドの概要は ? をタイプ してください。 "/var/mail/grape": 2 個のメッセージがあります。 2 個新規。 > N 1 Y.Suzuki(Tokyo off Tue Sep 29 21:40 17/528 President's Report N 2 A.Lemon Tue Sep 29 21:47 21/513 Next Lecture ? |
到着したメッセージは日本語 EUC ではなく 7 ビット JIS コードに変換されていますが、表示されるときには自動的に日本語 EUC になります。
? 2 Message 2: From lemon Tue Sep 29 21:47 JST 1992 Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ? |
「メッセージの作成」の項で行なったように、変数 crt および PAGER を設定しておくと、大きなサイズのメッセージも画面上で流れることなく、ページごとに見ることができます。
mailx には、到着したメッセージを保存するためのコマンドが用意されています。s (save)、c (copy)、w (write) コマンドは、変数 folderconv が設定されていると、到着したメッセージを日本語 EUC にコード変換して保存します。save と copy は、フォルダの形式でヘッダー情報をつけて保存します。write はメッセージ本体だけを保存します。また、save を実行するとそのメッセージはメールボックスから取り除かれますが、copy の場合は保存後もメールボックスに残ります。
? save 2 folder.1 "folder.1" [新規ファイル] 22/481 |
save コマンドにより、メッセージ番号 2 のメッセージが folder.1 に保存されました。このときは日本語 EUC にコード変換されています。到着したメッセージを変換しないでそのままフォルダに保存したいときは、nsave または ncopy コマンドを利用して保存します。
? nsave 2 folder.2 "folder.2" [新規ファイル] 22/523 |
nsave コマンドにより、メッセージ番号 2 のメッセージが folder.2 にコード変換されずに保存されました。
一度読んだメールは特に明示的に保存しないと、mailx 終了時に mbox と呼ばれるフォルダ (あらかじめ設定していない場合はユーザーのホームディレクトリにある mbox) に保存されるように設定されています。この設定は mailx の変数の値と終了コマンドの種類によって変わります。mbox に保存される場合も、日本語 EUC にコード変換されてから保存されます。
? visual 2 |
v (visual) コマンドにより、到着したメッセージをテキストエディタを使って編集できます。起動されるエディタは VISUAL 変数で指定されます。デフォルトは vi です。編集するメッセージが日本語 EUC にコード変換されてから、エディタが起動します。
From lemon Tue Sep 29 21:47 JST 1992 Return-Path: <lemon> by sushi.Japan.Sun.COM (5.0/SMI-SVR4) id AA01421; Tue, 29 Sep 92 21:47:02 JST Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) Message-Id: <9209300939.AA01421@sushi.Japan.Sun.COM> To: grape Content-Type: text Content-Length: 112 Subject: Next Lecture X-Sun-Charset: ja_JP.euc 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ‾ ‾ ‾ "/tmp/Rz8575" 18 行, 412 バイト |
実際にメッセージを変更すると、変更後は日本語 EUC でメールボックスに保存されます。
From lemon Tue Sep 29 21:47 JST 1992 Return-Path: <lemon> by sushi.Japan.Sun.COM (5.0/SMI-SVR4) id AA01421; Tue, 29 Sep 92 21:47:02 JST Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) Message-Id: <9209300939.AA01421@sushi.Japan.Sun.COM> To: grape Content-Type: text Content-Length: 112 Subject: Next Lecture X-Sun-Charset: ja_JP.euc **** 予定変更のお知らせ ***** 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ‾ ‾ ‾ ‾ :wq |
「メッセージの読み取り」に戻り、受信したメールに返事を出してみます。
? 2 Message 2: From lemon Tue Sep 29 21:47 JST 1992 Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 ? r To: lemon Subject: Re: Next Lecture |
r コマンドを実行すると、自動的に差出人宛てのメールを作成する状態になります。ここからは、「メッセージの作成」の項の説明に従って、‾p、‾v などを使ってメッセージを作成できます。返事の中に、現在読んでいるメッセージまたは別のメッセージを挿入したいときは、‾m または ‾f と入力します。どちらの場合も、挿入メッセージが日本語 EUC にコード変換されて挿入されます。
? r To: lemon Subject: Re: Next Meeting ‾m メッセージ挿入: 2 (つづく) |
‾m の入力時に特にメッセージ番号を指定しなかったので、現在読んでいる 2 番のメッセージが挿入されました。ここで、vi を起動して (‾v コマンドの実行) 返事を書きます。
To: lemon Subject: Re: Next Lecture From lemon Tue Sep 29 21:47 JST 1992 Date: Tue, 29 Sep 92 21:47:02 JST From: lemon (A.Lemon) To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は 10月1日(木) 午後2:00開始 に変更されました。 会場は未定です。 檸檬 了解しました。 葡萄 ‾ ‾ ‾ :wq |
挿入したメッセージの各行の先頭にはタブが挿入され、段落がつけられています。この自動的に挿入される文字列は、変数 indentfix で設定します。デフォルトはタブです。文字列の段落付けは、‾f でメッセージを挿入するときには適用されません。
:wq "/tmp/Re8580" 21 行、333 バイト (つづく) . 作成終了 ? |
「メッセージの作成」の項の説明に従って作成を終了すると、メッセージは 7 ビット JIS コードに変換されて送信されます。mailx 自体の終了には、 quit、コマンド行の先頭での CTRL-D、exit などのコマンドが用意されています。quit と CTRL-D は、既読のメッセージを mbox に保存し、未読のメッセージをメールボックスに保存します。exit は、メールボックスを変更せず、メッセージを mbox に保存しないで mailx を終了します。mailx 終了時の動作は、 hold などの変数を設定してカスタマイズできます。
ここでは、comsat を利用したメール到着の通知を紹介します。まず、到着した日本語メールが正しくコード変換して表示されるように、第 4 章「日本語対応 SunOS のシステム環境設定」の 「in.comsat の設定」に従って、 inetd(1M) の構成を修正します。
次に、biff(1B) でメール受信の通知を行うように設定します。
grape% biff y |
このように設定すると、7 ビット JIS コードに変換された日本語メールが、到着時に日本語 EUC にコード変換され、画面にはじめの数行が表示されます。
New mail for grape has arrived: ---- Date: Wed, 30 Sep 92 11:56:35 GMT From: lemon (A. Lemon - Garden Company) To: grape Subject: Next Lecture 葡萄さん: 次回の講習会は ...以下省略... |
この章では、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 コマンドの利用」の 「電子メールの送受信」を参照してください。