Git
VSCode

Git + VSCode で SHIFT_JIS を扱うには Encoding 固定の方が便利

Windows 上の VSCode + Git で SHIFT_JIS を扱うには結局 Encoding 固定に行き着いた件

VSCode + Git で色々調べた結果、VSCode で SHIFT_JIS を扱うには、自動的に SHIFT_JIS 判別して、他にも VSCode の git.js の buffer() に textconv を設定したりとかありました。それはそれで間違いではないと思いますし、欧米語に比べて日本語の扱いづらさ (UTF-8 に至るまでに SHIFT_JIS やら JIS やら EUC やら過去の経緯で色々な文字コードが存在して、未だに後方互換を優先する Windows みたいな処理系があるとか) で、文字コードを設定するにしても色々な思想があるのだなと思う今日この頃。

色々試してみて、日本語の文字列が短すぎると VSCode の文字コード自動判定が失敗するので、やっぱり文字コード固定指定が良いのだなと思いました。

VSCode は基本 UTF-8 で運用しておいて、SHIFT_JIS 指定が必要な VBScript とか VBA のプロジェクトのフォルダの .vscode/settings.json に以下の指定を追加します。
settings.json は、「ファイル」→「基本設定」→「設定」→「ワークスペースの設定」で編集可能です。

.vscode/settings.json
{
    "files.encoding": "shiftjis",
    "files.eol": "\r\n"
}

ここでは、ファイルエンコーディングは SHIFT_JIS 決め打ちで、改行コードは CRLF にしています。
このときの ~/.gitconfig とプロジェクトの .git/config、.gitattributes は以下のような感じです。
改行コードの変換ができていないので git diff に -w を付けても ^M とか表示されてしまうのはご愛嬌で。恐らく iconv から nkf にして改行コードも変換するようにすれば何とかなるかと思いますが、Git for Windows には nkf は入っていないし、実害がないので我慢することにしました。

~/.gitconfig
# git diff, git show 時に文字コード変換
[diff "cp932"]
    textconv = iconv -f cp932 -t utf-8

プロジェクト以下の Git の設定。
git config core.autocrlf ture で追加。

.git/config
[core]
    # 他にも色々な自動で入った設定
    autocrlf = true
.gitattributes
# Text
*       text=auto

# Diff
*       diff=cp932

diff の実行結果で、cp932 が一番しっくり来たのでこれかな。