12年間の解析人生で一番、面倒に思ったのは、統計解析でも、ビジュアライズでも、データマイニングでもなく、文字コードです。
Shift-jisはWindowsの世界ではすごく一般的で使いやすいようですが、Rの世界では鬼門です。
これはいろんな所で話していますが、極東の島国固有の文字コードなので、OSSの世界ではいろいろ弊害が出てしまいます。
R界隈では、encoding=cp932で回避できますが、他の言語と併用するようになると、予めシェルで文字コードを変換するのも手だと思います。
でも、元ファイルを書き換えてしまうと、持ち主のWindowsユーザからクレームも出てしまうので、やっぱりcpをかませるのが常套手段だと思います。
Linuxではnkfコマンドで文字コードを変換できます。
nkfの引数は次のようになっています
- j JISコードを出力する。
- e EUCコードを出力する。
- s シフトJISコードを出力する。
- w -w8[0] -w16[BL][0] Unicode を出力する。
- w -w80 UTF8コードを出力する。(BOM無し)
- w8 UTF8コードを出力する。
- w16 -w16B0 UTF16コードを出力する。(Big Endian / BOM無し)
- w16B UTF16コードを出力する。(Big Endian / BOM有り)
- w16L UTF16コードを出力す る。 (Little Endian / BOM有り)
- w16L0 UTF16コードを出力する。(Little Endian / BOM無し)
で、shift-jisのファイル"file.txt"をUTF-8に変換したいときは次のようになると思います。
hoge:~/Desktop/work$ nkf -g file.txt Shift_JIS hoge:~/Desktop/work$ cp file.txt file2.txt hoge:~/Desktop/work$ nkf -g file2.txt Shift_JIS hoge:~/Desktop/work$ nkf -w --overwrite file2.txt hoge:~/Desktop/work$ nkf -g file2.txt UTF-8
これでも、どうしようもない時もありましたが…