文字化けに立ち向かう
Macを使っていると、Windowsな人から送られてきたCSVを開いたときに文字化けしててツライ、的なことがよくあるので、備忘録的によく使う対処方法をまとめておく。
Vimで立ち向かう
:e
で文字コードを指定して開き直してやる。
:e ++enc=cp932
このまま編集して保存すると指定した文字コードで保存される。
ちなみに :set enc?
でVimの内部で使われる文字コードが、 :set fenc?
でファイルの文字コードが確認できる。
注意したいのは、:set fenc?
は文字化けしている状態だと fileencoding=latin1
などと表示され、うまく機能しない。
また :set enc?
は、先ほどあげた :e
で指定した文字コードは関係なく、Vim内部で使われる文字コードが表示される。
いま開いているファイルを別の文字コードに変換したければ :set fenc=cp932
などする。
ただし、文字化けしている状態で変換処理をかけてはいけない。
必ずファイルの文字コードを正しく指定してから開き、変換処理をかける。
下記のようなエラーが出た場合は文字化けしていることが多いので確認する。
E513: write error, conversion failed (make 'fenc' empty to override)
どうしてもこのエラーが取れない場合は :set fenc=
とやると解消される。
なお、Vimには文字コード自動判別機能があるので .vimrc
に設定すれば適切な文字コードで開いてくれる。
" .vimrc set encoding=utf-8 set fileencodings=iso-2022-jp,euc-jp,cp932,utf-8
コマンドで立ち向かう
iconv
コマンドを使うことで異なる文字コード間の相互変換ができる。
結果は標準出力なので、ファイルに出力したい場合は -o
オプションやリダイレクトを利用する。
$ iconv -f CP932 -t UTF=8 original.csv > converted.csv
パイプを使って grep
と組み合わせたりすると便利。
$ iconv -f CP932 -t UTF-8 anime.csv | grep "ドラえもん" | less