手短に言うと
cat 'hoge.csv'
で文字化けするならば下記のコマンドを試す。
iconv -f SJIS 'hoge.csv'
「位置 **** で不正な入力シーケンスがありました」が出るならば windows の拡張文字コードセットになっていることがあるので、下記を試す。
iconv -f cp932 'hoge.csv'
~/.bashrc 等のシェル起動時のスクリプトの中にエイリアスを定義しておくと楽できる。
alias sjis="iconv -f cp932"
長々と話すと
CSV ファイルの様子を見るときに head
とか tail
とか cat
とかしていると、 SJIS のファイルが文字化けして吐きそうになることがあります。そういう時には nkf
か iconv
を使うとなんとかなることが多いです。
nkf
は Network Kanji Filter の略だそうです。大昔に日本語のメールを送る時に変換するために生まれたコマンドらしいです。こちらは、インストールされてないことが多いので下の iconv
が良いかもしれません。たぶん nkf hoge.csv
のように引数なしでも動くはずです。引数を設定すれば好きな文字コード・改行コードに変換できます。詳細はヘルプを見たほうが良いです。
iconv
は International Codeset Conversion Library の略で、わりと一般的な文字コード変換ライブラリのようです。I convert で覚えるといいかもしれません。あるいは、アイコンブとか。 iconv -f SJIS hoge.csv
のようにして使います。nkf
と同じく、他の文字コードにも変換できます。ヘルプを見ればわかりますが iconv -l
で扱うことの出来るすべての文字コードが出てきます。
ある Shift JIS のファイルを iconv -f SJIS
で読んだ場合に「位置 **** で不正な入力シーケンスがありました」というようなメッセージが出ました。確認してみると「﨑」の文字で「たつさき」とか呼ばれている文字でした。どうやら windows でこの文字を使用した場合、通常の Shift JIS の枠から外れ CP932 と呼ばれる windows 独自の文字コードセットになるようです。なので iconv -f CP932
で読んでみると、うまく表示できました。
ちなみに csv ファイルを直接 cat
や less
で見ると形が崩れて見づらいので、
column -s, -t hoge.csv | less -S
のようにすると、見やすく表示することが出来ます。