Tech Blog

一括テキスト編集で起きたエンコーディング事故と、全文再生成で復旧した話

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 を使う。

気軽にメッセージください

技術相談・ご感想・ご質問があればメッセージをお願いします。