かわたま.net

Enjoy Creative! かわたまのwebメモ

macでファイルの文字コードを変換する『nkfコマンド』の使い方とオプション一覧

2015 February 20

Tag:

macでファイルの文字コードを変換する『nkfコマンド』の使い方です。

今回困ったこと
「UTF-8」でエンコーディングされたhtmlファイルを「Shift-JIS」に変換したい。
ファイルのcharset宣言だけ変えたら文字化けした(調べてみて、そりゃそうだと納得・・・。)
sublime textは「UTF-8」しか使えないらしい。
環境
OS X 10.10.2

まずはnkfコマンドがインストールされているかチェック。デフォルトでは入っていないようです。
$ nkf --version
インストールされていない場合はエラーが出ます。インストールしましょう。

「Homebrew」でnkfコマンドをインストール

OS X用パッケージマネージャー「Homebrew」でnkfコマンドをインストールします。
「Homebrew」の環境が整っていない場合は公式サイトを参照してください。
$ brew install nkf

インストールできたらバージョンをチェック
$ nkf --version

Network Kanji Filter Version 2.1.3 (2013-11-22) 
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2013, The nkf Project.

バージョンが表示されたらok

nkfコマンドの書式

$ nkf [options] [file]

【nkfコマンドの主なオプション】

-u 出力時にバッファリングを行わない
-j JISコードに変換する
-e EUCコードに変換する
-s シフトJISコードに変換する
-w UTF8コードに変換する
-r ROT13/47の変換する
-T テキスト・モードで出力する
file 変換元のファイルを指定する
-g 文字コード自動判別の結果を表示
–overwrite 引数のファイルに直接上書き

使用例

文字コードを変換したいファイルの文字コードをチェック

$ nkf -g hoge.html

ファイルの文字コードをUTF-8に変換

$ nkf -w --overwrite hoge.html
–overwrite を指定すると、元のファイルを変換して上書きします。
※元ファイルを残す場合は–overwrite をつけない

Shift-JISに文字コード変換

nkf -s --overwrite hoge.html

カレントディレクトリのファイル全てをSJISに変換

$ nkf -s --overwrite ./*

文字コード変換後は、ソースコードのcharset宣言も合わせて変更します。

今回色々調べてみたら、sublime textは基本「UTF-8」しか使えないんですね!知らなかった・・・
sublime textもプラグインを入れることで他の文字コードも扱えるようになったり、文字コードの変換もできるみたいです。試してみたらまた記事にします^O^