Syntax Error.

[Sy] macOS(Sierra)のターミナルでテキストファイルの文字コードを変換するコマンド

2016/10/21

最近Windowsを使っている人とのファイルのやり取りが多くなってきたので、Shift-JISからUTF-8への変換をしたい場合や、そもそも文字コードがわからず調べたいときがよくあります。そういった時に役に立つのが Homebrew でインストールできる nkf というコマンドです。

環境

  • macOS 10.12 (Sierra)
  • Homebrew 1.0.7
  • nkf 2.1.4 (Homebrewでインストール)

⇒ [Sy] macOS(Mac OS X)のバージョン情報をターミナルから調べるためのコマンド | Syntax Error. ⇒ [Sy] macOS(Mac OS X) で Homebrew のバージョンを調べる方法 | Syntax Error

nkfがインストールされているか確認

まずnkfコマンドが使える状態かどうかを以下のコマンドなどで調べてみましょう。

$ which nkf
/usr/local/bin/nkf   <- nkfコマンドのパスが通っているか確認してます。(どこにも見当たらない場合は「nkf not found」とか出ます)

$ brew list | grep nkf
nkf                  <- Homebrewでインストール済みのパッケージにnkfがあるかどうか確認してます。(インストールしていない場合は何も表示されません)

インストールされていれば、次の「nkfをHomebrewでインストール」は読み飛ばしてください。

nkfをHomebrewでインストール

まだnkfがインストールされてなかった場合は、以下のようにbrewコマンドでインストールしてください。

$ brew install nkf

インストールが終わったら、バージョンを確認してみましょう。

$ nkf -v
Network Kanji Filter Version 2.1.4 (2015-12-12)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2015, The nkf Project.

まったく本題と関係ないですが、nkfは「Network Kanji Filter」の略みたいですね。

nkfコマンド(-gオプション)で文字コードを調べる

文字コードを調べるには、-gオプションを使います。

$ nkf -g path/to/file  <- 「path/to/file」 は任意のファイルのパスに置き換えてください。
UTF-16

nkfコマンドで文字コードを変換(上書き)する

文字コードを変換したい場合は、 変換後の文字コードによってオプションが変わります。

また、変換前の文字コードは自動で判別してくれるので、特に指定は必要ないです。

まず UTF-8 に変換したい場合は-wオプションをつけます。

$ nkf -w --overwrite path/to/file

--overwriteをつけることで、元のファイルに上書きします。

上書きせずに別ファイル(例:path/to/new_file)で保存したい場合は、こうしましょう。

$ nkf -w path/to/file > path/to/new_file

続いて Shift-JIS に変換したい場合は、-sオプションをつけます。

$ nkf -s --overwrite path/to/file

関連記事