一括テキスト編集で起きたエンコーディング事故と、全文再生成で復旧した話
PowerShell Encoding Operations
はじめに
Astro ブログの記事 Markdown を PowerShell で一括編集したとき、エンコーディングの設定を誤り、日本語が文字化けする事故が発生しました。
作業していたのはこのような画面です。

何が起きたか
- PowerShell の
Set-Contentがデフォルトで UTF-16 LE で書き出す - Astro の Content Collections は UTF-8 を期待している
- 結果として日本語文字が全て文字化けした
復旧方法
全ファイルを Git の直前コミットから再チェックアウトして復旧し、その後 [System.IO.File]::WriteAllText に UTF-8 エンコーディングを明示して再適用しました。
一覧・特集・ランキング・詳細の各画面を順に開き、日本語の表示を目視確認します。

# 正しい書き方
[System.IO.File]::WriteAllText($path, $content, [System.Text.Encoding]::UTF8)
学んだこと
PowerShell でファイル書き込みを行うときは、エンコーディングを必ず明示すること。
Set-Content -Encoding UTF8 または [System.IO.File]::WriteAllText + UTF8 を使う。