Shift_JIS から UTF-8 へ文字コードを変換する
日本語の CSV・テキストが文字化けする原因は Shift_JIS と UTF-8 のミスマッチ。OS 別に確実な変換手順をまとめます。
発生する症状
- Excel で CSV を開くと『繝・Η繝シ』のような化け
- GitHub 上で日本語のファイルがモジバケ
- ターミナル出力が ??? になる
Mac / Linux(CLI)
iconv -f SHIFT_JIS -t UTF-8 in.csv > out.csv
# BOM を付けるなら
printf '\xEF\xBB\xBF' > out.csv && iconv -f SHIFT_JIS -t UTF-8 in.csv >> out.csv
Windows(PowerShell)
$bytes = [System.IO.File]::ReadAllBytes('in.csv')
$text = [System.Text.Encoding]::GetEncoding('shift_jis').GetString($bytes)
[System.IO.File]::WriteAllText('out.csv', $text, [System.Text.UTF8Encoding]::new($true))
VS Code
- ファイル開く > 右下の文字コード表示をクリック
- 『エンコードで開き直す』 > Shift_JIS
- 再度 『エンコードで保存』 > UTF-8 with BOM
どのエンコーディングで保存すべきか
- 業務 CSV を Excel で開く前提なら UTF-8 with BOM
- Web / プログラム間のやり取りは UTF-8 (BOM なし)