📚

VSCodeのGit拡張で日本語文字化けを直す

2024/08/17に公開

はじめに

VSCodeとGitの連携で、Gitのファイルの差分を表示すると、日本語が文字化けしていたので、その対応メモです。
対応にあたり、こちらの記事が参考になりました。
https://zenn.dev/hikarin/articles/f0c6ad20d43adbdcf8a1

環境

前提として、私は以下の環境で作業しています。

  • Windowsマシンで開発、Linuxは使用していない
  • 言語はCで、文字コードはShiftJIS、改行コードはCRLF

OS、ツールのバージョンは以下

  • OS: Windows 10 Pro 64bit
  • VSCode: 1.85.1
  • Git: 2.42.0.windows.1
  • nkf: 2.1.1

VSCodeの設定で、ファイルのエンコーディングおよび改行コードは以下のように設定しています。

settings.json
{
  "files.encoding": "shiftjis",
  "files.eol": "\r\n",
  "files.autoGuessEncoding": false,
}

gitconfig

gitconfig
[core]
  # ページャーの設定
  # UTF-8に変換、lessを指定
  pager = LC_ALL=ja_JP.UTF-8 nkf -w | less -Sx4

  # CRは改行コードの一部扱い
  whitespace = cr-at-eol

  # 日本語ファイル名の対応
  quotepath = false

  # 改行コードの自動変換を無効
  autocrlf = false

# gitk, git-guiの設定
[gui]
  encoding = utf-8

# git diff, git showでの文字コード変換
[diff "cp932"]
  # ShiftJISに変換
  textconv = nkf -s --cp932

# git add -pでの文字コード変換
[interactive]
  # UTF-8に変換
  textconv = nkf -w
  • ページャーの設定で、lessはShiftJISを扱えないため、UTF-8に変換してから渡すようにしました。オプションで、-Sは行の折り返しを無効、-x4はタブ文字を4スペースに設定
  • nkfは、Vectorのサイトからnkf.exe nkf32.dll Windows用をダウンロードし、解凍後、「vc2005」-「win32(98,Me,NT,2000,XP,Vista,7)Windows−31J」フォルダからnkf32.exeを取得してください。次に、nkf32.exeをnkf.exeにファイル名を変更し、パスの通ったフォルダに置いてください。
    例: C:¥Program Files¥Git¥cmd
    オプションで、-wはUTF-8に変換、-sはShiftJISに変換、--cp932はCP932エンコーディングの使用を指定

.gitattributes

.gitattributes
# diff
* diff=cp932

初め、diff=cp932をCP932と書いていたため、変換が行われず、あれ?ってなりました。大文字小文字には注意が必要です。

これで、Gitの日本語文字化けが解消されました。

以上

Discussion