wombWorks[ウームワークス]

─ NOW LOADING ─

wombWorks[ウームワークス]

webナレッジメモ

PowerShellでShift-JISのHTMLをUTF-8に一括変換する方法

投稿日時 2026/01/17 PowerShellでShift-JISのHTMLをUTF-8に一括変換する方法

古いWebサイトや、Windows製のHTMLファイルでは、
Shift-JISで保存され、metaタグの文字コード宣言もShift_JISのまま
というケースがよくあります。

この状態のHTMLをVSCodeで開くと文字化けしたり、
UTF-8前提のサーバーへ移行する際に不具合が出ることがあります。

この記事では、PowerShellだけを使って

まとめて一括変換する方法 を紹介します。

対象となる条件

実行するPowerShellコード

以下のコードを そのままコピーして実行してください。

$path = 'C:\Users\yamada\(任意のディレクトリ)'

$utf8NoBom = [System.Text.UTF8Encoding]::new($false)

Get-ChildItem $path -Filter *.html | ForEach-Object {
    $content = [System.IO.File]::ReadAllText($_.FullName, [System.Text.Encoding]::GetEncoding(932))
    $content = $content -replace 'charset=Shift_JIS', 'charset=UTF-8'
    [System.IO.File]::WriteAllText($_.FullName, $content, $utf8NoBom)
}

$path

には、HTMLファイルが入っているフォルダのパスを指定してください。

このコードで行っていること

① Shift-JISとしてHTMLを正しく読み込む

GetEncoding(932) を指定することで、
WindowsのShift-JIS(CP932)として明示的に読み込みます。

自動判定ではないため、読み込み時に文字化けしません。

② metaの文字コード宣言を書き換える

$content = $content -replace 'charset=Shift_JIS', 'charset=UTF-8'

HTML構文の解析は行わず、
文字列として確実に置換します。

変換後は次のようになります。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

③ UTF-8(BOMなし)で保存する

[System.Text.UTF8Encoding]::new($false) は、
UTF-8(BOMなし)を指定しています。

Web用途・VSCode・各種サーバー環境で最もトラブルが起きにくい形式です。

実行結果

このスクリプトを実行すると、対象フォルダ内のすべてのHTMLファイルが

状態になります。

PowerShellは成功時に何も表示しないため、
エラーが出なければ正常終了です。

注意点

まとめ

Shift-JISのHTMLをUTF-8に移行する際は、

を別々に行う必要があると思われがちですが、
PowerShellを使えば 一括で安全に処理できます。

古いWebサイトのメンテナンスや、
UTF-8環境への移行作業で、そのまま使える実用的な方法です。

CONTACT US

ホームページ・広告企画の事なら、
どんな事でもお気軽にご相談ください!

06-6195-7180
電話受付時間 平日10:00~18:30