Linux/UNIXでファイルの文字コード(UTF-8 or Shift_JIS or EUC-JP…)を確認する
Pocket

Linux/UNIXで、指定したファイルの文字コード(UTF-8とか、EUC-JPとか)を調べる場合は、以下のような方法がある。

1.fileコマンドで調べる

UTF-8か、EUC-JPなのか、それともShift_JISなのか…
日本語のファイルだとはわかっていて、その違いを調べるだけであれば、fileコマンドで事足りる。

以下のように、「-i」オプションを付与してfileコマンドを実行することで、文字コードを調べることができる(Shift_JISのみ、「unknown-8bit」として出力される)。

file -i ファイルPATH
blacknon@BS-PUB-UBUNTU-01:~$ file -i /tmp/ascii.txt
/tmp/ascii.txt: text/plain; charset=us-ascii
blacknon@BS-PUB-UBUNTU-01:~$ file -i /tmp/euc-jp.txt
/tmp/euc-jp.txt: text/plain; charset=iso-8859-1
blacknon@BS-PUB-UBUNTU-01:~$ file -i /tmp/shift_jis.txt
/tmp/shift_jis.txt: text/plain; charset=unknown-8bit
blacknon@BS-PUB-UBUNTU-01:~$ file -i /tmp/utf-8.txt
/tmp/utf-8.txt: text/plain; charset=utf-8

 

2.nkfコマンドで調べる

nkfコマンドを用いることでも、ファイルのエンコード方式を求めることができる。
具体的には、「–guess」オプションを付与することでそれを行うことができる。

nkf --guess ファイルPATH
blacknon@BS-PUB-UBUNTU-01:~$ nkf --guess /tmp/ascii.txt
ASCII (LF)
blacknon@BS-PUB-UBUNTU-01:~$ nkf --guess /tmp/euc-jp.txt
EUC-JP (LF)
blacknon@BS-PUB-UBUNTU-01:~$ nkf --guess /tmp/shift_jis.txt
Shift_JIS (LF)
blacknon@BS-PUB-UBUNTU-01:~$ nkf --guess /tmp/utf-8.txt
UTF-8 (LF)
Sponsored Links

3.uchardetコマンドで調べる

日本語だけではなく、中国語やロシア語といった外国語のファイルも含まれている状態の場合は、この「uchardet」コマンドを使うといいだろう。
Debian/Ubuntuでは、以下のコマンドでインストールできる。

sudo apt-get install uchardet libuchardet-dev

 

インストール後は、以下のようにコマンドを実行する。

uchardet ファイルPATH
blacknon@BS-PUB-UBUNTU-01:~$ uchardet uchardet/test/ja/euc-jp.txt
EUC-JP
blacknon@BS-PUB-UBUNTU-01:~$ uchardet uchardet/test/ja/shift_jis.txt
Shift_JIS
blacknon@BS-PUB-UBUNTU-01:~$ uchardet uchardet/test/ja/utf-8.txt
UTF-8
blacknon@BS-PUB-UBUNTU-01:~$ uchardet uchardet/test/da/iso-8859-1.txt
windows-1252
blacknon@BS-PUB-UBUNTU-01:~$ uchardet uchardet/test/ru/ibm855.txt
IBM855
blacknon@BS-PUB-UBUNTU-01:~$ uchardet uchardet/test/fr/iso-8859-1.txt
windows-1252

 

4.file2コマンドを用いる

「file-kanji」パッケージに含まれているfile2コマンドもあり、これを使うことでエンコードの確認が行える。
Ubuntuの場合、以下のコマンドでインストールが可能だ。

sudo apt-get install file-kanji

 

実際使う際は、以下のようにコマンドを実行する。

file2 ファイルPATH
blacknon@BS-PUB-UBUNTU-01:~$ file2 /tmp/ascii.txt
/tmp/ascii.txt: ascii text
blacknon@BS-PUB-UBUNTU-01:~$ file2 /tmp/euc-jp.txt
/tmp/euc-jp.txt:        EUC text
blacknon@BS-PUB-UBUNTU-01:~$ file2 /tmp/shift_jis.txt
/tmp/shift_jis.txt:     SJIS text
blacknon@BS-PUB-UBUNTU-01:~$ file2 /tmp/utf-8.txt
/tmp/utf-8.txt: UTF-8 text

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。