日本語環境を正しく動作させるためには、環境変数 LANG が ja (日本語 EUC)、 ja_JP.PCK (PC 漢字コード、シフト JIS コード)、または、ja_JP.UTF-8 (UTF-8) に設定されている必要があります。また、端末ドライバに、日本語の文字を正しく透過させ、日本語の文字幅に応じた処理を正しく行わせるためには、端末が認識する文字コードに従って setterm で設定する必要があります。
これらの設定を C シェルのコマンド行から行う場合は、次のように入力してください。
ja ロケールで使用する場合
sun% setenv LANG ja sun% setterm -x JapanEUC |
ja_JP.PCK ロケールで使用する場合
sun% setenv LANG ja_JP.PCK sun% setterm -x PCK |
ja_JP.UTF-8 ロケールで使用する場合
sun% setenv LANG ja_JP.UTF-8 sun% setterm -x UTF-8 |
ja_JP.UTF-8 ロケールでこのように setterm を正しく行なった場合、ja ロケールで定義された文字以外は置換文字 ('?' または '〓') で置き換えられます。この置き換えを行いたくない場合は、
sun% setterm -x ASCII |
を実行する方法がありますが、以下の副作用がありますので、どうしても置き換えを防ぎたい場合に限って使用してください。
端末上での行編集が正しく動作しない
たとえば Bourne シェルや C シェル (Korn シェルの場合は設定に依存する) のコマンド行での入力時の編集がこれにあたります。
表示不可能な文字の出力で端末上の表示が乱れることがある
UTF-8 で未定義のコードポイントもそのまま出力されます。
システムインストール時にシステムのデフォルトロケールを日本語に指定したシステムでは、デフォルトで LANG が ja、ja_JP.PCK、または ja_JP.UTF-8 に設定されているため、LANG の設定は不要になります。
デフォルトロケールを変更したい場合は、/etc/default/init ファイル内の LANG を変更して、システムを再起動してください。詳細は『JFP ユーザーズガイド』を参照してください。
/usr/bin/talk、/usr/bin/mailx は複数バイト対応になっていません。複数バイト対応の mailx と talk は、/usr/SUNWale/bin にあります。複数バイト対応のコマンドを使用する場合、/usr/SUNWale/bin のパスを /usr/bin よりも前に設定してください。なお、/usr/SUNWale/bin のコマンドは ja ロケールのみ動作が保証されています。
Solaris 7 では、次の機能が ja_JP.PCK および ja_JP.UTF-8 ロケールでサポートされていません。
libjapanese.a
SunOSTM 4.x バイナリ互換パッケージ (BCP)
libjapanese.a と BCP は将来のリリースでもサポートの予定はありません。
SUNWale パッケージの mailx、talk などで使用するアジア各国対象のコマンド
PCFS での PC 漢字コード (以降 PCK とする) ファイル名
PCFS での PCK ファイル名は ja ロケールでもサポートされていません。
C コンパイラ、cpp、UIL コンパイラなどで使用する文字、文字列、リテラル、コメント
また、次の機能が ja_JP.UTF-8 ロケールでサポートされていません。
kanji コマンド
/usr/xpg4/bin と /usr/bin の両方に存在するコマンドは、ja_JP.PCK および ja_JP.UTF-8 ロケールでは /usr/bin のコマンドがサポートされません。したがって、/usr/bin よりも前に /usr/xpg4/bin のパスを加えてください。
ja_JP.PCK ロケールでは PCK を直接扱えますが、DOS のファイルシステムと UNIX ファイルシステムの違いは依然残ります。たとえば、DOS からテキストファイルを PCFS でマウントして持ってくる場合は dos2unix -ascii が、DOS へ持っていく場合は unix2dos -ascii がそれぞれ必要になります。詳細は、pcfs(7)、dos2unix(1)、 unix2dos(1) の各マニュアルページを参照してください。
日本語 UTF-8 ロケールは、日本語の文字情報は「UI-OSF 日本語環境実装規約 Version 1.1」を、日本語以外の文字情報は Unicode Consortium の UNICODE 2.1 CHARACTER DATABASE をもとに作成されています。日本語の文字情報は、UI-OSF の実装規約をもとにしているため、他の UNIX ベンダーとの互換性は向上しますが、その反面 ja ロケールおよび ja_JP.PCK ロケールとの相違点も生じます。以下に、日本語文字処理に影響する相違点を説明します。
LC_CTYPE次の日本語ロケール専用文字クラスが追加されています。
ascii | paren | jisx0201 |
gaiji | jhankana | jspace |
次の日本語ロケール専用文字クラスはありません。
jalpha | jspecial | jgreek |
jrussian | junit | jsci |
jgen | jpunct |
ja および ja_JP.PCK ロケールでも使用するアプリケーションは、これらの文字クラスは使用しないようにしてください。
LC_COLLATE
JIS X 0208 のほうが JIS X 0212 より先になります。日本語以外の文字は日本語のあとにコード順で並びます。
LC_TIME
以下の日付、および時刻の表示形式が変わります。() 内はstrftime(3C) および date(1) で有効な書式です。
abday (%a)
日 と () が入らない。
mon (%B)
1月 と 1 の前に <space> が入らない。
d_t_fmt (%c)
%Y年%m月%d日 %H時%M分%S秒 と abday (%a) が入らない。
era_d_t_fmt (%Ec)
%EY%m月%d日 %H時%M分%S秒 と abday (%a) が入らない。
alt_digit (%Od などのロケール固有の代替数値記号を使うもの)
代替数値記号は使用しない。
libjapanese とそれに関連したヘッダーファイルは、Solaris 7 から SUNWjlibj という全体ディストリビューションクラスタでのみインストールされるパッケージに移動しました。この中には、libjapanese ソース互換パッケージも含まれていますので、既存の libjapanese ユーザーはこれを用いて移行を進めてください。将来のリリースでは libjapanese.a およびこれに関連したヘッダーファイルは削除される予定です。libjapanese ソース互換パッケージの使用法に関しては、/usr/share/src/libjapanese/README を参照してください。
Solaris 7 の関数 iconv() およびコマンド iconv で利用できる符号変換の種類の詳細は、iconv_ja(5) のマニュアルページを参照してください。
関数 iconv() およびコマンド iconv の詳細は、iconv(3) および iconv(1) のマニュア ルページを参照してください。
iconv() およびコマンド iconv における ISO-2022-JP は、UI-OSF 日本語環境実装規約 Version 1.1 で定義される ISO-2022-JP 符号化文字集合を意味します。
jisconv インタフェースには、次の制限があります。
jisconv(3X) で提供される 1 文字変換用のプログラミングインタフェース (関数名が c で始まるもの) は範囲チェックを行いません。
日本語 EUC との変換を行うプログラミングインタフェースでは、JIS X 0212-1990 (補助漢字) をサポートしていません。
PCK との変換を行うプログラミングインタフェースでは、『TOG 日本ベンダ協議会推奨 日本語 EUC・シフト JIS 間コード変換仕様』に基づく変換をサポートしていません。
7 ビット JIS との変換を行うプログラミングインタフェースは、更新番号を含むエスケープシーケンスに対応していません。
これらの機能を利用する場合は、iconv(3) プログラミングインタフェースを使用してください。
ワイド文字の内部表現に依存した処理を行うことは避けてください。ja ロケールは、従来の内部表現が維持されています。
ネットワークを通して日本語 EUC、PCK または UTF-8 間の文字変換を行う機能はありません (メールを除く)。そのため、サーバー・クライアント型のアプリケーションなどは、明示的にユーザー側で変換できない限り、混在環境では正しく動きません。
Solaris 2.6 では、ネットワークプリンタのサポートが追加されました。ここでは、日本語 PostScriptTM プリンタをネットワーク経由で接続した場合を例に、その設定方法を紹介します。プリンタの設定方法に関する詳細は、lpadmin(1) のマニュアルページ、 『Solaris 7 のシステム管理 (第 1 巻) および (第 2 巻)』、『JFP ユーザーズガイド 』を参照してください。
ネットワークプリンタとして追加する場合
手順1. /usr/lib/lp/model/netstandard を編集します。
常にバナーページを出さないようにしたいときは、nobanner を yes に変更します。
nobanner=no |
->
nobanner=yes |
また、バナーページを出したいときは、date コマンドの前に env LANG=C を加えます。
echo "##### Date: `date ' ...... |
->
echo "##### Date: `env LANG=C date ' ..... |
以下の例は、日本語 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 |
手順 3. 次のように入力して、テキストファイル印刷フィルタを登録します。
sun# cd /etc/lp/fd sun# lpfilter -x -f postprint sun# lpfilter -f jpostprint -F jpostprint.fd |
lpfilter -x -f postprint 実行時、postprint フィルタが登録されていないと、以下のようなエラーが出ますが、無視して次に進んでください。
UX:lpfilter: エラー: No filter by the name "postprint" exists. |
手順4. システムをリブートします。
sun# sync;sync;sync sun# reboot |
以上の手順が終了すると、lp コマンドを使用して、追加したネットワークプリンタに出力することができます。
ファイル名が日本語の場合、lp の引数のファイル名としては、プリンタサーバーのシステムロケールのコードセットのみ使用可能です。たとえば、プリンタサーバーの /etc/default/init の LANG の設定値が、LANG=ja となっている場合は、日本語 EUC のファイル名は正しく印刷できますが、それ以外は印刷できません。この場合は、
sun% cat <日本語.txt> | lp -y PCK |
などを実行し(ファイルの中身も PCK の場合)、lp に直接日本語ファイル名を渡さないようにすることで回避してください。なお、ファイルの中身のコードセットに関しては、-y オプションを指定してプリンタサーバーのサポートするコードセットに変換することが可能です。
デフォルトでは、ASCII フォントである Courier が使用されます。JIS X 0201 ローマ文字用図形キャラクタ集合に切り替えたいときは、以下のように -f オプションで指定してください。
Ryumin-Light:
sun% jpostprint -f Ryumin-Light.Hankaku |
GothicBBB-Medium:
sun% jpostprint -f GothicBBB-Medium.Hankaku+GothicBBB-Medium |
マニュアルページや、nroff、troff などで清書された日本語ファイルを /usr/xpg4/bin/more で表示させると、一部の文字が欠けるなど、きれいに表示されないことがあります。
回避方法: 環境変数 PAGER として、ja (japanese) ロケールの場合は /usr/bin/more を、ja_JP.PCK および ja_JP.UTF-8 ロケールの場合は /usr/bin/pg を、明示的に指定して表示させてください。