6.9. 文字コードと改行コードの変換 【nkf】

$ nkf [オプション] 変換元ファイル

Linux で使用される文字コードや改行コードは、Windows や MacOS で使用されているものと異なります。そのために、Windows や MacOS で編集していたテキストファイルを Linux で参照しようとすると、文字コードの違いによりアプリケーションによっては文字化け等の不具合を起こすことがあります。また、Windows で作成したテキストファイルを Linux で参照すると改行コードの違いにより ^M と行末に表示されてしまうことなどもあります。各プラットフォームにおける文字コードと改行コードは次のようになっています。

表 6-5. 文字コードと改行コード

 文字コード改行コード
LinuxEUCLF
WindowsシフトJISCR+LF
MacOSシフトJISCR

このような各プラットフォームにおけるテキストファイルの違いを変換するためのコマンドが nkf です。

代表的なオプションを以下に示します。

表 6-6. nkf コマンドのオプション

-jJIS コードに変換して出力します。
-sシフト JIS コードに変換して出力します。
-e日本語 EUC コードに変換して出力します。
-d行末の CR を削除して出力します。
-c行末の CR を追加して出力します。
-Lu行末を LF にして出力します。
-Lw行末を CRLF にして出力します。
-Lm行末を CR にして出力します。
-xX0201(半角カナ)を変換しません。デフォルトは半角カナを全角に変換して出力します。
-J入力コードを JIS と指示します。
-S入力コードをシフトJIS と指示します。
-E入力コードを日本語EUC と指示します。
--unix行末にある改行コードを LF に変更し、EUC で出力します。
--windows行末にある改行コードを CR+LF に変更し、シフトJIS で出力します。
--mac行末にある改行コードを CR に変更し、シフトJIS で出力します。

通常は、--unix、--windows、--mac オプションを使すれば簡単にファイルの変換が行えます。

例えば、Windows 環境におけるテキストファイル(readme.sjis)を Linux 環境におけるテキストファイル(readme.euc)として変換し保存するには、次のコマンドを実行します。

$ nkf --unix readme.sjis > readme.euc

逆に、Linux 環境におけるテキストファイルを Windows 環境におけるテキストファイルとして変換し保存するには、次のコマンドを実行します。

$ nkf --windows readme.euc > readme.sjis