2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VSCode 1.28からターミナルでgit logがうまく日本語表示できなくなった

Last updated at Posted at 2018-10-09

症状

VSCodeのバージョンを1.25から1.28に上げてから、ターミナルでgit logしてもコメントがうまく日本語表示されなくなった。文字化けではないんだけど、日本語になるべき部分がコードポイントで表示される的な感じ。以下のgit logのコミットメッセージをご覧ください。

image.png

なお、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が起因しているだろうと思うことにした。(推理放棄)

対応

雑な対応だけど、とりあえず~/.bashrcexport LANG=en_US.UTF-8を書き出してターミナルを停止→起動したらうまくいった。(~/.bash_profileだとうまくいかなかった)

あとはenvコマンドやlocaleコマンドで確認して、git logも日本語がちゃんと表示されたのでおしまい。

(追記)
terminal.integrated.setLocaleVariablesを設定する対応が紹介されています。こちらのほうが筋がよさそうです。
https://qiita.com/ka-san/items/cba813331403fb973596

2
4
0

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
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?