これまでファイル・システムを3回にわたって解説してきました。今回はファイル名の文字コードについて解説します。

 ファイル名の文字コードは,WindowsやMac OSなどとファイルを交換する場合にしばしば問題になりますので,知っておいて損はありません。今回は仕組みよりも,機能の使い方に重点を当てて紹介します。

Linuxの多言語機能の基本

 Linuxのユーザーは世界中にいます。そのため,英語だけでなく,日本語を含む多くの言語をサポートしています。日本で販売されている日本語版の Linuxディストリビューションでも,設定を変更するだけで他の言語を利用できるようになっているものがほとんどです。では,どのようにして多言語をサポートしているのでしょうか。

 Linuxは,locale(ロケール,またはロカール)と呼ばれる仕組みで多言語をサポートしています。localeには,どの国のどの言語か,文字コード体系や通貨単位などは何か,といった情報を設定します。現在のlocale設定は,コマンド・ラインで「locale」コマンドを実行すると分かります(図1)。

$ locale
LANG=ja_JP.eucJP
LC_CTYPE="ja_JP.eucJP"
LC_NUMERIC="ja_JP.eucJP"
LC_TIME="ja_JP.eucJP"
LC_COLLATE="ja_JP.eucJP"
LC_MONETARY="ja_JP.eucJP"
LC_MESSAGES="ja_JP.eucJP"
LC_PAPER="ja_JP.eucJP"
LC_NAME="ja_JP.eucJP"
LC_ADDRESS="ja_JP.eucJP"
LC_TELEPHONE="ja_JP.eucJP"
LC_MEASUREMENT="ja_JP.eucJP"
LC_IDENTIFICATION="ja_JP.eucJP"
LC_ALL=
図1●システムのlocale設定を表示させた例
localeコマンドを実行すると,システムの現在のlocale 設定が表示されます。

 これらのlocale情報を適宜設定すれば,例えばユーザーごとに使用言語環境を切り替えることができます。図1を見れば分かる通り,定められた環境変数にlocaleを表す値(ja_JP.eucJPなど)を設定することでlocaleを切り替えられます。環境変数には,全体の言語設定を示すLANG やLC_ALL環境変数のほか,時刻の表示方法(LC_TIME)やメッセージの言語(LC_MESSAGES)などさまざまなものがあります(表1)。これらの環境変数にそれぞれ別のlocale設定を施すことも可能です。個別指定しない場合は,LANG環境変数の値が標準値として利用されます。

表1●主なlocale設定用環境変数
通常は,LANG環境変数だけを設定しておけば良いでしょう。個別設定が必要な場合は,それぞれの環境変数に値を設定します。
表1●主なlocale設定用環境変数

 図1は,筆者のシステムのlocale設定です。ここでは,すべて「ja_JP.eucJP」という設定になっています。この値の初めの部分の「ja」は「日本語」という言語を表し,次の「JP」は「日本」という国を表します。つまり「ja_JP」は「日本で使われる日本語」を示します。

 言語と国を分けるのは,同じ言語でも国によっては違いがあるためです。例えば,米国の英語は「en_US」,英国の英語は「en_GB」になります。

 最後の「eucJP」は文字コード体系を示します。日本語の場合は,主に「JISコード(ISO-2022-JP)」,「シフトJIS」,「日本語EUC」,「UTF-8」の4つの文字コード体系があります。これらに対応するロケール設定は表2の通りです。

表2●日本語の主な文字コードとlocale
Linuxで現在一般的なlocale名を挙げています。
表2●日本語の主な文字コードとlocale

 EUCは「Extended Unix Code」の名が示す通り,UNIXシステム向けの文字コード体系です。Linuxを含めた一般的なUNIXシステムでよく利用されます。