nkf コマンド

文字コードを変換するツール。

標準入力を文字コードを変換しながらそのまま標準出力に吐き出す。引数にファイル名を指定すれば、標準入力ではなくそのファイルを読み込む。

例えば EUC-JP を UTF-8 に変換するには

$ cat ファイル名 | nkf -Ew

または

$ nkf -Ew ファイル名

nkf は Network Kanji Filter の意味らしい。

インストール

Ubuntu, CentOSではnkfというパッケージに入っている。(Ubuntu 15.10, 15.10, CentOS 6.4, 7.2 で確認)

$ sudo yum install nkf
## または
$ sudo apt-get install nkf

オプション

文字コードの指定

以下のオプションで、大文字が入力の文字コード、小文字が出力の文字コードを表す。

-J, -j
ISO-2022-JP (ISO-2022-JP の J と覚える)
-S, -s
Shift-JIS (Shift-JIS の S と覚える)
-E, -e
EUC-JP (EUC-JP の E と覚える)
-W, -w
UTF-8。(由来はよくわからないがworldwideな文字コードと覚えている)

改行コード

-Lu
改行コードをLF(0x0A)(Unixでよくある形式)に変換
-Lw
改行コードをCR+LF(0x0D 0x0A)(Windowsでよくある形式に変換
-Lm
改行コードをCR(0x0D)(Macでかつてよくあった形式に変換

その他

-x
半角カナを半角のままにする。このオプションを付けないと全角に変換される
-g または --guess
変換するのではなく、文字コードを推定する
--overwrite
変換した結果を標準出力するのではなく、元ファイルを上書きする。 入力は標準入力からではなく、ファイル名で与える必要がある。

HOWTO

文字コードを調べるには

文字コードが不明で、判別させるには、-g または --guess を使う。ついでに改行コードも判別してくれる。

nkf --guess foo.txt

# パイプでの使用例
cat foo.txt | nkf --guess

BASE64のエンコード・デコードをするには

nkfコマンドでもBASE64ができるみたいで、base64コマンドのページ参照。ただ、base64コマンドのほうが多くの環境に入っているので、 nkfをわざわざ使う理由はないかもしれない。

ファイルの文字コードを変更して上書きするには

-> ファイルの文字コードを変換するには

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク