[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]