LoginSignup
17
15

More than 5 years have passed since last update.

msysgit でどうしても日本語文字化けが治らなかった際の対処

Last updated at Posted at 2014-09-28

Gitで日本語コメントを書いたら、文字化けしてしまった。

Qiita - msysgit で日本語を使いたいを参考に
設定してみたが、コミットログの文字化けだけがやはり治らず....

どうしたものかと、やってみた試行錯誤をまとめておきます。
(注:ものすごいイージーミスでした)

追記(2014-10-10)

元記事の kumazo さんからの指摘で、確認してみたところ、_vimrcではなく、.vimrcでも動作しました.
お好みの方でどうぞ.

環境

  • Windows7 + msysgit(git1.9.4)
  • コミットログは、msysgit内蔵のVimで編集したい
  • gitbash上では、文字コードをすべてUTF-8で扱いたかったので、以下の設定を.bashrcもしくは.bash_profileに設定
.bash_profile
export LANG=ja.UTF-8

何故か.vimrcの設定が反映されない

.vimrcの作成

参考サイトには以下のようにある.

これらをまとめて $HOME/.vimrc に保存しておく。

.vimrc
set encoding=cp932
set termencoding=cp932
set fileencoding=utf-8
set fileencodings=cp932,utf-8

で、この設定を $HOME(WindowsではC:\Users\***\)に保存して試したが、
なにやらうまく反映されていないっぽい.

$ vim
:set fenc
fileencoding=

設定してるはずなのに、空だと...?

.vimrc、認識されている?

そこで見つけたページがこちら.
Stackoverflow - Where is vimrc or vim profile for github's mingw32 shell on a Windows machine?

さっそく、自分のvimrcがgitbashに正しく認識されているか確認したところ...

$ vim --version | grep vimrc
   system vimrc file: "$VIM\vimrc"
     user vimrc file: "$HOME\_vimrc"
 2nd user vimrc file: "$HOME\vimfiles\vimrc"
 3rd user vimrc file: "$VIM\_vimrc"

~.vimrc じゃなくて _vimrcじゃないか というイージーミス発見.~
~早速ファイル名変更.~

自分はは、_vimrcと変更しましたが、 .vimrc でも問題なく動きました.
詳細はコメント欄参考.

最大の敗因は以下に続く.

vimrcのエラー

ファイル名変更した上で、反映されているか確認したが、
あいも変わらず fileencodingが空.

なんでだろうなぁ と眺めていたところ、
vimの起動時にエラーメッセージが一瞬表示されたような気がしたので確認.

$vim 2>vim_log; cat vim_log
Error detected while processing c:\Users\****\_vimrc:
line    3:
E474: Invalid argument: encoding      =
line    4:
E518: Unknown option: cp932
line    5:
E518: Unknown option: utf-8
line    6:
E518: Unknown option: utf-8,cp932
Press ENTER or type command to continue

えっ?

$ cat ~/_vimrc
set number

set encoding      = utf-8
set termencoding  = cp932
set fileencoding  = utf-8
set fileencodings = utf-8,cp932

こんなアホみたいなエラー出ていれば、vimrcが反映されるはずないだろ!

というわけで、以下のように、=で揃えていた部分を削除して、保存しなおした.

$ cat ~/_vimrc
set number

set encoding=utf-8
set termencoding=cp932
set fileencoding=utf-8
set fileencodings=utf-8,cp932

無事fencが反映され、コミットログを保存しても、文字化けしなくなりました.

まとめ

原因

Vimの設定ミスが原因で、コミットログがShift-JISで保存されていましたというオチ.
その設定ミスが、本筋と関係ないところで起きていたイージーミスだという残念っぷり.

  • msysgit内蔵のvimが求める環境設定は .vimrc ではなく、 _vimrc
  • とはいえ、.vimrcでも動いたので、勝手に変換してくれてるのかもしれません
  • vimrcを綺麗に整形しようとするな!

悟り

何事でも「うまくいかないな」と思ったら、上流の原因から当たること.
今回の場合、gitのコミットログが怪しいと分かった時点で、
エディタの設定から見直すのが近道だった.

17
15
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15