[macOS General] File の mime-encoding を調べて変換する

コマンドラインでかんたんにすませたい。

[markdown]
## file コマンドでエンコーディングを判別したが失敗した

`file` コマンドで分かるらしいので調べてみる。

> * [Linuxコマンド集 – 【 file 】 ファイル・タイプを判定する:ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20071130/288506/?ST=oss)

“`prettyprinted
% file -bI *
text/plain; charset=unknown-8bit
text/plain; charset=unknown-8bit
ERROR: line 22: regexec error 17, (illegal byte sequence); charset=unknown-8bit
“`

うまくいかない。
Sublime Text で開いて確認したところ、`SHIFT_JIS` と表示されました。

## iconv で変換してみる

JIS 関連の扱えるフォーマットを調べてみると、たくさん出てきた。。。

“`prettyprinted
% iconv -l | grep JIS
ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO
JISX0201-1976 JIS_X0201 X0201 CSHALFWIDTHKATAKANA
ISO-IR-87 JIS0208 JIS_C6226-1983 JIS_X0208 JIS_X0208-1983 JIS_X0208-1990 X0208 CSISO87JISX0208
ISO-IR-159 JIS_X0212 JIS_X0212-1990 JIS_X0212.1990-0 X0212 CSISO159JISX02121990
MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS
EUC-JISX0213
SHIFT_JISX0213
“`

> * [Linuxコマンド集 – 【iconv】文字コードを変換して出力する:ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20131209/523510/)

こんな形で変換できました。

“`prettyprinted
% iconv -f SHIFT_JIS -t UTF-8 06.csv > 06.utf8
“`

## nkf を使えば auto detect して convert してくれた

どうも nkf をつかえば、入力を自動判別してくれるよう。

> * [linux – How to convert a text file from Shift JIS to UTF-8 and back from the terminal – Super User](http://superuser.com/questions/313032/how-to-convert-a-text-file-from-shift-jis-to-utf-8-and-back-from-the-terminal)

homebrew でインストールする。

“`prettyprinted
% brew install nkf
==> Downloading http://dl.sourceforge.jp/nkf/59912/nkf-2.1.3.tar.gz
######################################################################## 100.0%
==> make CC=clang
==> make install prefix=/usr/local/Cellar/nkf/2.1.3 MKDIR=mkdir -p
/usr/local/Cellar/nkf/2.1.3: 4 files, 348K, built in 7 seconds
“`

実行します。

> * [【Proton.jp】 文字コード変換プログラムnkfの使い方](http://www.proton.jp/main/apps/nkf.html)

“`prettyprinted
% nkf -w 06.csv > 06.utf8
“`

## xargs をつかって一括変換する

xargs をつかって、カレントディレクトリのファイルを一括で変換します。

> * [まさおのブログ (表): ファイルの文字コードを一括変換 (find, nkf, xargs)](http://masaoo.blogspot.jp/2009/02/find-nkf-xargs.html)
> * [shell – 改行コードをLFからCRLFに一括変換 – Qiita](http://qiita.com/ANTON072/items/4d609aaae2c00a02a88e)

“`prettyprinted
% find . -name “*.csv” | xargs -n 10 nkf -w –overwrite
% file -bI *
text/plain; charset=utf-8
text/plain; charset=utf-8
ERROR: line 22: regexec error 17, (illegal byte sequence); charset=utf-8
“`

楽できた!

## 補遺

`file` コマンドで mime-type の判定まわりで、正規表現がらみのエラーが出るのだろうか?
無視してもよいのかな。

“`prettyprinted
ERROR: line 22: regexec error 17, (illegal byte sequence); charset=utf-8
“`

> * [Karuku Mac: fileコマンドがテキストファイルでエラーになる問題の回避](http://karukumac.blogspot.jp/2013/07/file.html)
[/markdown]