ファイルの文字コードを調べる

linux上でファイルの文字コードを調べたかった。
CentOS4でkccもnkfも入ってないみたいなので、nkfを入れてみた。

# wget http://osdn.dl.sourceforge.jp/nkf/20770/nkf207.tar.gz
# tar xzvf nkf207.tar.gz
# cd nkf207
# make
# install nkf /usr/local/bin

nkfを使って文字コードを調べる

$ nkf --guess hogehoge.txt
UTF-8

ファイルの文字コードの変換、改行コードの変換

このページが参考になりました。



構文

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

オプション一覧

  • j(省略可能) : JISコード(ISO-2022-JP)を出力
  • e : EUCコードを出力
  • s : Shift-JISコードを出力
  • w : UTF-8コードを出力(BOM無し)
  • Lu : unix改行形式(LF)に変換
  • Lw : windows改行形式(CRLF)に変換
  • Lm : macintosh改行形式(CR)に変換
  • g(--guess) : 自動判別の結果を表示
    • overwrite : 引数のファイルに直接上書き
    • version : バージョン情報を表示(インストール済チェック)

使用例
文字コードチェック

$ nkf -g example.csv

Shift_JIS

文字コード変換(UTF-8)

$ nkf -w --overwrite example.csv

・変換されているかチェック

$ nkf -g example.csv

UTF-8


文例
文字コード変換(JISコード/ISO-2022-JP)

$ nkf -j --overwrite example.csv

文字コード変換(EUC-JP)

$ nkf -e --overwrite example.csv

文字コード変換(Shift-JIS)

$ nkf -s --overwrite example.csv

文字コード変換(UTF-8)

$ nkf -w --overwrite example.csv

・ディレクトリ内txtファイル全てを、文字コードUTF-8、改行→unix形式(LF)に変換

$ nkf -w Lu --overwrite *.txt

・ディレクトリ内txtファイル全てを、文字コードShift_JIS、改行→windows形式(CRLF)に変換

$ nkf -s Lw --overwrite *.txt

失敗例

$ nkf -w example.csv > example.csv

とやると、中身が空っぽになるので注意。
きちんと--overwriteオプションをつけるか、違う名前で変換後mvコマンドで上書きすること。