Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

nkf

日本語の文字コードを変換する
2015/05/20 08:00

対応OS: linux , freebsd, solaris
nkf [-e] [-j] [-s] FILE...

 nkfコマンドは、FILE...で指定したファイルの内容から、文字コードを変換して出力します。

 日本語文字コードにはJISコードEUCコードシフトJISコード(SJISコード)などがあり、OSなどの環境の違いによって、作成されるテキストに異なる文字コードが使用される場合があります。現在のようにネットワークによって、複数のコンピュータが相互接続された環境においては、文字コードの異なるファイルがやり取りされるケースも少なくありません。

 nkfコマンドを使用して、文字コードの変換を行うことで、自身の環境と異なる文字コードを使用したファイルを読めるようにすることができます。

日本語文字コード

 日本語文字(全角文字)はコンピュータに格納される時には、2バイトの2進数でコード化されています。このコードを文字コードといいます

オプション
① -j
FILE...に指定したファイルの内容を、JISコードに変換して出力します。オプションを省略した場合にもJISコードに変換して出力します。
② -e
FILE...に指定したファイルの内容を、EUCコードに変換して出力します。
③ -s
FILE...に指定したファイルの内容を、シフトJISコードに変換して出力します。
引数
① FILE...
文字コードを変換するファイルをスペースで区切って指定します。ワイルドカードによる指定も可能です。
文字コードをEUCコードに変換する
[takeda]$ cat SJIS 
炎妖UC薬@C
天B
ファイル「SJIS」の文字コードはシフトJISコード
UNIX(Linux)で使用する文字コードはEUCコードのため文字化けして読めない
[takeda]$ nkf -e SJIS > EUC
オプション「-e」を指定して、EUCコードに変換したものをファイル「EUC」に出力
[takeda]$ cat EUC
これはEUCのファイルです。
[takeda]$
HINT!

 catコマンド

日本語文字コードも自動で認識

 nkfコマンドがEUCコードやSJISコードなどの変換を行うことは本文中で述べました。Windows環境で作成されたテキスト文書(これはSJISコード)をviで読もうとしたときnkf -eを使い、EUCコードに変換したテキストを生成し、それを読むという手順を踏まなければなりません。更新する場合などは、さらに更新後のテキストファイル(これはEUCコード)をnkf -sで再度SJISコードへ戻してやる必要があります。Windows環境においては、これら日本語コード系を自動認識して読み書きできる優れたフリーのエディタがいくつもあります。しかし、UNIX環境においてもemacs(またはMULE)を使えばこれらの問題を解決してくれます。ただ、emacsはカスタマイズ性に優れている分、初心者には敷居の高いものであり敬遠されがちなようです。筆者はemacsを使いますが、それでも使いこなせるようになるにはまだまだのようです。

関連タグ

UNIXコマンド辞典トップページに戻る

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5