Git コミットログの文字化けではまる

いつのまにかコミットログで日本語が化けるようになってしまった。
MacでUTF-8で統一しているので問題ないはずなのに・・・

と思っていたら、犯人は昨日設定したvimの設定だった!

~/.vimrcの設定を【コラム】OS X ハッキング! (108) vimとEGBRIDGE 15で異体字を含む文書を作成する | パソコン | マイナビニュースを参考にして以下のように設定していたのが駄目だった。

set enc=utf-8
set fenc=utf-8
set fencs=iso-2022-jp,euc-jp,cp932

enc、fenc、fencsの意味は下記のページを読むと分かる。

実は、 viで日本語の文字コードを自動判別 - 玉虫色に染まれ!に書かれている通りここに罠がありました。

fencsは、設定された文字コードで順番にファイルを開いてみて、最初に成功した文字コードを採用します。

つまり、今回の設定だと以下のようになっていたと思われる。

  • git commit -a を実行
  • vimが起動し、コミットログ編集画面になる
  • このとき、fencsに従い文字コードを決定するが、アスキー文字だけなのでISO-2022-JPで開く
  • fencは変換に成功した文字コードが設定されるので、ISO-2022-JPとなる
  • そしてこのままコミットログに日本語を記述すると、ISO-2022-JPでコミットされ文字化けする


結局どうしたか。

面倒なので、utf-8オンリーにした。utf-8以外のファイルはまあ基本的に開かないでしょ、ということで・・・

set enc=utf-8
set fencs=utf-8