UTF-8のCSVをExcelで開いて日本語が文字化けする場合は、文字化けした状態で保存せず、空のブックから「テキストまたはCSVから」で読み込み直します。
最初に原本を残す
文字化けしたCSVをそのまま上書きすると、元の文字を復元できなくなることがあります。まずCSVを複製し、原本は変更しないでください。
次にCSVの文字コードと区切り文字を確認する方法の診断で、文字コードとBOMを確認します。ファイルはブラウザ内で処理され、サーバーには送信されません。
UTF-8とBOMなしが表示された場合
CSV_ENCODING_UTF8 と CSV_BOM_MISSING が同時に表示されても、ファイルが壊れているとは限りません。BOMはファイル先頭に付く文字コードの目印で、UTF-8では必須ではありません。
ただし、ExcelがCSVをダブルクリックで開くとき、BOMなしのUTF-8を環境に合わない文字コードとして解釈し、日本語が崩れることがあります。この場合は拡張子や内容を変更せず、読み込み方法を変えます。
Excelで読み込み直す手順
Windows版Excelでは、一般に次の順で操作します。
- Excelで空のブックを開く
- 「データ」タブを選ぶ
- 「テキストまたはCSVから」を選ぶ
- 元のCSVを指定する
- プレビューの文字コードを
65001: Unicode (UTF-8)にする - 区切り文字が実データと一致しているか確認する
- 日本語と列の分かれ方を確認して読み込む
メニュー名はExcelのバージョンにより少し異なります。「データの取得」内にある場合もあります。
先頭ゼロや長い番号も確認する
文字化けが直っても、郵便番号、商品コード、会員番号などが数値へ自動変換されることがあります。00123 が 123 になったり、長い番号が指数表示になったりする場合は、Power Queryまたはテキストインポートで対象列を文字列として読み込みます。
読み込み後では元のゼロを推測できないため、プレビュー段階で列型を確認することが重要です。
BOM付きへ変換する場合
毎回同じ相手がダブルクリックで開く運用なら、作成元で UTF-8 BOM付き を選べるか確認します。変換する場合も、元ファイルを残し、変換後に次を比較してください。
- 行数が同じ
- 列数が同じ
- 日本語が正しい
- 先頭ゼロが残っている
- 日付や長い番号が変わっていない
BOMを付けることは、列ずれやCSV構文の誤りを直す操作ではありません。全データが1列にまとまる場合はCSVがExcelで1列になる場合の区切り文字確認へ進みます。
UTF-8を選んでも直らない場合
診断が CSV_ENCODING_SHIFT_JIS や CSV_ENCODING_UTF16 を示す場合は、UTF-8ではなく表示された候補を読み込み画面で選びます。CSV_ENCODING_UNREADABLE の場合は、自動判定の対応外、破損、またはテキストではないファイルの可能性があります。
作成元に確認できるなら、次を聞くのが確実です。
- 出力時の文字コード
- 区切り文字
- 改行を含む値の有無
- Excel向けの出力設定があるか
推測した文字コードで上書きを繰り返さず、正しい条件が分かってからコピーを変換します。