Diff of UNIX/コマンド/変換/nkf


TITLE:nkf - 漢字変換
#navi(UNIX/コマンド)
#contentsx

nkf コマンドで漢字コードの変換を行います。

漢字コードには主に JIS (ISO-2022-JP)、SJIS (Shift_JIS)、EUC-JP の3種類があり、
普通の UNIX で使用するのが EUC、Windows や Mac では SJIS が使われます。
JIS (ISO-2022-JP) はメール・ネットニュースで使われます。
|オプション|説明|
|-j|JISコードに変換(default)|
|-s|Shift_JISコードに変換|
|-e|EUCコードに変換|
|-w|UTFコードに変換(version2.0以降)|
|-d|改行コード変換。NL(\n)の後のCR(\r)を削除|
|-c|改行コード変換。NL(\n)の後にCR(\r)を追加|

UNIX 上で作成したファイルがあるとします(EUC + NL)。
 % nkf -s [filename] > [new_file]
のようにして Shift_JIS に変換します。改行コードは NL だけのままなので、
Windows(dos) の改行コード NLCR にするためには実質
 % nkf -sc [filename] > [new_file]
のように実行することになります。
また逆に UNIX 用のファイルにするには
 % nkf -ed [filename] > [new_file]
のようにします。

nkf の出力は標準出力なので、リダイレクトを使います。リダイレクトを使うときに、入力ファイルと同じファイルに出力しようとすると内容が消えてしまうので、他のファイルを指定しましょう。

よって、上書きで十分な場合は
 % nkf -ed [filename] > /tmp/tmp ; mv /tmp/tmp [filename]
のようにすることになると思います。もしくは最近の nkf ならば --overwrite オプションが使えると思います。
 % nkf -ed --overwrite [filename]

複数ファイルの文字コードを変換する場合は
 % find . -exec nkf -ed --overwrite \{\} \;
のように find コマンドと併用すれば可能だと思います。

URLエンコードされた文字列をデコードする場合は --url-input オプションを使用します。
 % nkf --url-input -S -w # Shift-JIS をURLエンコードしたものを UTF-8 でデコード
 % nkf --url-input -E -w # EUC をURLエンコードしたものを UTF-8 でデコード 
 % nkf --url-input -w -w # UTF-8 をURLエンコードしたものを UTF-8 でデコード 

#navi(UNIX/コマンド,,footer)

xrea