文字コード変換コマンドnkfの使い方まとめ Linux

nkfとは、ネットワークでメールやニュースの読み書きをするために作られた、漢字コードの変換フィルタです。

構文

基本的な構文は次のようになります。

$ nkf オプション [入力ファイル名] [> 出力ファイル名]

入力ファイル、出力ファイルはデフォルトではそれぞれ標準入力、標準出力になっています。

使用例

具体的な使用例としては以下のようになります。

ファイルに使われている文字コードのチェックを行います。

入力
$ nkf -g example.csv
出力
Shift_JIS

ファイルの文字コードを変換する際は次のように行います。
例えば、ファイルの文字コードをUTF-8に変換する場合だと

入力
$ nkf -w --overwrite example.csv
出力

これで変換が完了します。

-wオプションは入力をUTF-8に変換したもので出力する、というオプションです。
他にも-sオプションだとShift_JISに変換。-eオプションだとEUCコードに変換という意味を持っています。以下に、nkfの出力として指定できる文字コードのオプション一覧を示します。

-j     JISコードを出力する。
-e     EUCコードを出力する。
-s     シフトJISコードを出力する。
-w -w8[0] -w16[BL][0]  Unicode を出力する。
-w -w80     UTF8コードを出力する。(BOM無し)
-w8    UTF8コードを出力する。
-w16 -w16B0  UTF16コードを出力する。(Big Endian / BOM無し)
-w16B  UTF16コードを出力する。(Big Endian / BOM有り)
-w16L  UTF16コードを出力す る。 (Little  Endian / BOM有り)
-w16L0 UTF16コードを出力する。(Little Endian / BOM無し)

overwriteオプションは元のファイルを変換してもので置き換える、というオプションです。したがって、上の例のコマンドはexample.csvをUTF-8に変換したもので上書きせよ、という意味を持っています。

次のコマンドで実際に変換されたか確認します。

入力
$ nkf -g example.csv
出力
UTF-8

となり、無事変換されていることが分かります。

注意

文字コードを変換する場合に

$ nkf -w example.csv > example.csv

のようにすると、ファイルの中身が全て消えてしまいます。overwriteオプションを用いるか、
出力ファイルには入力ファイルと違うものを指定するようにした方がよいでしょう。

応用例

応用例として次の2つの変換の場合を示します。

  1. ディレクトリ内のファイル全ての文字コードを表示します。
  2. ディレクトリ内のtxtファイル全てを、、文字コードをShift_JIS、改行をwindows形式(CRLF)に変換します。

1.ディレクトリ内のファイル全ての文字コードを表示します。

入力
$ nkf -g *
出力例
example.csv: Shift_JIS
example2.csv: UTF-8
test.txt: Shift_JIS

2.ディレクトリ内のtxtファイル全てを、文字コードをShift_JIS、改行をwindows形式(CRLF)に変換します。

$ nkf -s Lw --overwrite *.txt

Reactions on Twitter

  1. @karitainu より:

    これでMacで困るやつ解決。EUC-JPからUTF-8に変換するなら「-Ew」をオプション Now Browsing: 文字コード変換コマンドnkfの使い方まとめ Linux – http://t.co/RtVVtrasFC

著者: admin

I am just an administrator.
»