はじめに
VSCode + Git + PowerShell の環境で .gitignore を編集していた際に、PowerShellで中身を確認したところ文字化けが発生しました。原因とその対処法を簡潔にまとめます。
発生した問題
- PowerShellで
.gitignoreをtypeコマンドで表示した際、日本語コメントが文字化けする
原因の理解
🔸 UTF-8とBOMの違い
- UTF-8には BOM付き(with BOM) と BOM無し(without BOM) がある
- BOMとは "Byte Order Mark" の略で、ファイルの先頭に文字コード情報を記述するメタデータのようなもの
🔸 PowerShellの仕様
- PowerShellはBOM無しのUTF-8を正しく認識できないことがあり、Shift_JISなどで誤解釈して文字化けが発生
🔸 .gitignore などの設定ファイルとBOMの相性の悪さ
-
.gitignoreは Git が「各行を1つのパターン」として読み込む、非常に単純なテキスト処理の対象です - そのため、BOM付きで保存するとファイルの先頭(1行目)に見えないBOMバイトが追加され、Gitがその行を正しく解釈できなくなることがあります
- 例:本来は
.venv/と記述していたつもりが、Gitから見ると\ufeff.venv/のように見えてしまい、無視ルールが機能しなくなる - 特に
.env、.dockerignore、.gitattributesなども同様で、単純なテキスト行マッチに依存する構成ファイルではBOMは百害あって一利なしです
解決方法
✅ .gitignore などの構成ファイル
-
UTF-8 (BOM無し)で保存する(デフォルトでOK) - PowerShellで文字化けしても、
.gitignoreの機能には影響なしと割り切ってよい
気づきと学び
- 文字コードの細かい違いが、開発の進行を不意に妨げることがある
- ただし、重要なのは「実害があるかどうか」「進行に支障が出るか」を冷静に判断すること
- 今回は、
.gitignoreはBOM無しで問題ないこと、PowerShellは表示上の問題だけだと理解した上で、気になる部分を再保存だけして先に進む判断をした
おわりに
細かいところが気になる性格は、時に開発のブレーキになります。ただし、原因を理解し、自分の中で区切りをつけて進むこともまた必要。自分自身の学びとして記事にしておきます。この記事が、同じような違和感やつまずきに出会った方の参考になれば幸いです。