表A-1 OSによる改行コードの違い
表A-1 OSによる改行コードの違い
[画像のクリックで拡大表示]
写真A-1 文字化けの例と文字コード変換後の表示<BR>Windows上で作成したテキスト・ファイル「sample.txt」を,Fedora Core 3のデフォルトの端末エミュレータ上でcatコマンドを用いて表示した例。文字コード変換後はきちんと表示されています。
写真A-1 文字化けの例と文字コード変換後の表示<BR>Windows上で作成したテキスト・ファイル「sample.txt」を,Fedora Core 3のデフォルトの端末エミュレータ上でcatコマンドを用いて表示した例。文字コード変換後はきちんと表示されています。
[画像のクリックで拡大表示]

日本語文字コード

 PCで利用される日本語文字コードには,「UTF-8」「日本語EUC」「シフトJIS」「JIS」などがあります。以前紹介したように,Fedora Core 3や同4の日本語文字コードはUTF-8(ユニコード)です。一方,Vine Linux 3.1や同3.2の日本語文字コードは日本語EUCです。

 WindowsはシフトJISを利用しています。そのため,Windowsで作成したテキストをLinux上のテキスト・エディタで開くと文字化けします。また,文字コードの違いに加えて,改行コードも各OSごとに異なります。LinuxをはじめとするUNIX系システムの改行コードは「LF(ラインフィード=改行)」です。一方,Windowsでは「CR(キャリッジ・リターン=復帰)」と「LF」の組み合わせが改行コードになります。ちなみにMacintoshの改行コードは,「CR」のみです(表A-1参照[拡大表示])。

 Linuxには文字コードや改行コードを変換するコマンド「nkf」が含まれます。nkfの使用例を示しましょう。例えば,Windows上で作成したテキスト・ファイル「sample.txt」をFedora Coreのデフォルトの端末エミュレータ上でcatコマンドを用いて表示すると,写真A-1[拡大表示]のようになり,日本語文字が化けています。そこで,nkfコマンドでファイル「sample.txt」の文字コードをUTF-8,改行コードをLFに変換します。変換先のファイル名は「sample_u.text」とします(nkfは変換後のテキストを標準出力に出力しますので,ファイルにリダイレクションします)。

$ nkf -w -Lu samba.txt > sample_u.text

ここで,コマンド行オプション「-w」は文字コードをUTF-8に変換する指定,「-Lu」は改行コードをLFに変換する指定です。Vine Linuxでは,日本語文字コードは日本語EUCですので,コマンド行オプション「-u」の代わりに「-e」を指定します。改行コードはFedora Core 3の場合と同じです。変換後のファイルをcatコマンドで表示すると,文字化けしていないことが分かります。

 また,Fedora Coreで作成したテキスト・ファイル「sample.text」をWindows上で文字化けせずに表示できるファイル(ファイル名は「sample_s.txt」)に変換するには,

$ nkf -s -Lw sample.text > sample_s.txt

と入力します。「-s」は文字コードをシフトJISに変換する指定,「-Lw」は改行コードをCR+LFに変換する指定です。