vimの文字化けについて

日本語ファイルを vim/gvimで読み込むと文字化けするのは、基本的に以下のどれかです。

  • vim/gvimの内部エンコードがcp932であるのにcp932で扱えない文字を含むファイルを開く場合
  • iconvが使えない場合
  • ファイルエンコーディングを誤認識する場合

cp932とutf-8

utf-8にはcp932では扱えない文字が含まれています。

Windowsの vim/gvimは内部エンコーディングのデフォルトが cp932なので utf-8でしか表示できない文字が含まれたファイルの場合は当然文字化けします。

この場合の対処としては vim/gvimの内部エンコーディングを utf-8にするしかありません。

また可能なら文書自体をcp932(Shift_JIS)へ変換してしまう手もあります。

UTF-8→cp932(Shift_JIS)変換表

当然ですが変換作業をVimで行いたい場合は内部エンコーディングを utf-8にする必要があります。

ファイルエンコーディングの誤判定

ファイルエンコードの誤判定については vim/gvim固有の問題ではないのですが、文字エンコードの自動判定を設定していても使用している日本語文字種が少ない utf-8のファイルは cp932(Shift_JIS)と判定されることがあります。

例えばファイルの内容が "ああ" だけの BOM無し utf-8 のファイルなどは、他のエディタでも誤判定する場合があります。

特に Windows用エディタでは cp932を優先的に判定している場合が多いのでわりとよく見られます。

これは原理的に区別のつくものではありません。

("ああ" だけのutf-8ファイルが、cp932と判定されて "縺ゅ≠"として文字化けしている様子)

自動判定に失敗して文字化けしたファイルを手動で、文字エンコードにutf-8を指定して読込直すには次のようにします。

:e ++enc=utf-8

gvimならファイル(F)メニューからも読み込み直せます。

iconv

iconvが使えない場合は Windowsなら iconv.dllを用意する、あるいは iconvオプションが有効でない vimなら iconvオプションが有効なvimをインストールするなどしてiconvが使える環境を整えるしかありません。

iconvについて