ファイルの文字コードを推定するコマンド(Mac)


概要

ファイルの文字コードを推定するコマンドを調べた。

環境

os: maxOS Sierra Version 10.12.6
terminal: iTerm2 Build 3.1.5

内容

ターミナル
$ file --mime tmp.txt
tmp.txt: text/plain; charset=utf-8

tmp.txtのcharsetがutf-8であることが推定された。

詳細

文字コードを推定するためのファイルを作る

ターミナル
$ cat <<EOF > tmp.txt
heredoc> こんにちは
heredoc> 世界
heredoc> EOF
$ cat tmp.txt
こんにちは
世界

tmp.txtというファイルを作成した。

文字コードを推定する

ターミナル
$ file --mime tmp.txt
tmp.txt: text/plain; charset=utf-8

tmp.txtのcharsetは、utf-8となっていると推定された。
(charsetとは、character setのことで、コンピューターの文字コード系のことらしい?[2])

fileコマンドの--mimeオプションの確認

ターミナル
$ file --help
Usage: file [OPTION...] [FILE...]
Determine type of FILEs.
(中略)
  -I, --mime                 output MIME type strings (--mime-type and
                               --mime-encoding)
(以下略)

--mimeは、MIMEタイプの文字列を出力するためのオプションらしいと分かった。
(今回は、--mime-typetext/plainで、--mime-encodingutf-8のようだ)

マイム【MIME】[multipurpose Internet mail extensions]
電子メールで、文字のほか、画像や音声、動画などさまざまなデータを転送するための規格。[3]

意義

文字コードを推定の仕方が分かった。

おまけ

同じ環境で、半角英数字のみでファイルを構成すると、us-asciiと推定される。

ターミナル
$ cat <<EOF >tmp.txt
heredoc> hello
heredoc> 123
heredoc> EOF
$ file --mime tmp.txt
tmp.txt: text/plain; charset=us-ascii

これは、utf-8が半角英数字ではus-asciiと同じエンコーディングを採用しているからではないかと思っています。(関連:[4])

参考文献

[1]http://fukuyama.co/file-i-mime
[2]https://eow.alc.co.jp/search?q=character+set&ref=wl
[3]https://kotobank.jp/word/MIME-8967
[4]https://ja.wikipedia.org/wiki/UTF-8