症状
VSCodeのバージョンを1.25から1.28に上げてから、ターミナルでgit log
してもコメントがうまく日本語表示されなくなった。文字化けではないんだけど、日本語になるべき部分がコードポイントで表示される的な感じ。以下のgit log
のコミットメッセージをご覧ください。
なお、Gitのバージョンは git version 2.18.0.windows.1
で、同じ実行ファイルを見ています。
原因
心当たりとすれば、VSCodeをzip展開して使ってたり、ポータブルモードを使ったりしているので、一般的なVSCodeの導入とはズレていることも原因かもしれない。
でも、コマンドの翻訳対応はたいていLANGとかlocale周りが影響するので、先にそのあたりを調べることにした。
ターミナルのGit bashのenv
で環境変数を見比べてみたところ、1.25のターミナルではLANG=en_US.UTF-8
が定義されていたが、1.28では未定義になっていた。なので、ターミナルを表示するときの前処理でVSCodeが何かを色々やっているようだった。
一応、locale
コマンドも見たところ、1.25は全てen_US.UTF-8、1.28ではLANGは空っぽ、LC等もC.UTF-8
として表示された。
もう答えが出た感じだが、VSCodeがやった、という証拠が欲しかったのでVSCodeのコードを見にいったところ、ちょうど1.28でそれっぽい修正が入ってた。
https://github.com/Microsoft/vscode/commit/dbdbbe525904181eed2a5679accebd430d9634a1#diff-9b5b24c0097dc46a70269887c6c5489eR90
関係ないが、そしてこのlocaleはplatform.tsの_locale変数で決まるっぽい。(platform.tsのlocaleとしてexportされてる。)
https://github.com/Microsoft/vscode/blob/dbdbbe525904181eed2a5679accebd430d9634a1/src/vs/base/common/platform.ts#L49
なので、Windowsでは環境変数VSCODE_NLS_CONFIG
を使わない限り固定になるのかな?
でもターミナルのenvにはLANG=en
とは出ないので事象と合わない。多分コードを読み間違えてそう。TypeScript難しい。
特定には至らなかったが、多分VSCodeの1.28が起因しているだろうと思うことにした。(推理放棄)
対応
雑な対応だけど、とりあえず~/.bashrc
にexport LANG=en_US.UTF-8
を書き出してターミナルを停止→起動したらうまくいった。(~/.bash_profile
だとうまくいかなかった)
あとはenv
コマンドやlocale
コマンドで確認して、git log
も日本語がちゃんと表示されたのでおしまい。
(追記)
terminal.integrated.setLocaleVariables
を設定する対応が紹介されています。こちらのほうが筋がよさそうです。
https://qiita.com/ka-san/items/cba813331403fb973596