nkfコマンドは、FILE...
で指定したファイルの内容から、文字コードを変換して出力します。
日本語文字コードにはJISコード、EUCコード、シフトJISコード(SJISコード)などがあり、OSなどの環境の違いによって、作成されるテキストに異なる文字コードが使用される場合があります。現在のようにネットワークによって、複数のコンピュータが相互接続された環境においては、文字コードの異なるファイルがやり取りされるケースも少なくありません。
nkfコマンドを使用して、文字コードの変換を行うことで、自身の環境と異なる文字コードを使用したファイルを読めるようにすることができます。
日本語文字(全角文字)はコンピュータに格納される時には、2バイトの2進数でコード化されています。このコードを文字コードといいます
- ① -j
FILE...
に指定したファイルの内容を、JISコードに変換して出力します。オプションを省略した場合にもJISコードに変換して出力します。- ② -e
FILE...
に指定したファイルの内容を、EUCコードに変換して出力します。- ③ -s
FILE...
に指定したファイルの内容を、シフトJISコードに変換して出力します。
- ① FILE...
- 文字コードを変換するファイルをスペースで区切って指定します。ワイルドカードによる指定も可能です。
[takeda]$ cat SJIS
炎妖UC薬@C
天B
ファイル「SJIS」の文字コードはシフトJISコード[takeda]$ nkf -e SJIS > EUC
UNIX(Linux)で使用する文字コードはEUCコードのため文字化けして読めない
オプション「-e」を指定して、EUCコードに変換したものをファイル「EUC」に出力[takeda]$ cat EUC
これはEUCのファイルです。
[takeda]$
catコマンド
nkfコマンドがEUCコードやSJISコードなどの変換を行うことは本文中で述べました。Windows環境で作成されたテキスト文書(これはSJISコード)をviで読もうとしたときnkf -eを使い、EUCコードに変換したテキストを生成し、それを読むという手順を踏まなければなりません。更新する場合などは、さらに更新後のテキストファイル(これはEUCコード)をnkf -sで再度SJISコードへ戻してやる必要があります。Windows環境においては、これら日本語コード系を自動認識して読み書きできる優れたフリーのエディタがいくつもあります。しかし、UNIX環境においてもemacs(またはMULE)を使えばこれらの問題を解決してくれます。ただ、emacsはカスタマイズ性に優れている分、初心者には敷居の高いものであり敬遠されがちなようです。筆者はemacsを使いますが、それでも使いこなせるようになるにはまだまだのようです。
関連タグ
本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.