CSV・文字コード

UTF-8のCSVがExcelで文字化けする場合

UTF-8のCSVをExcelで開いて日本語が文字化けする場合は、文字化けした状態で保存せず、空のブックから「テキストまたはCSVから」で読み込み直します。

最初に原本を残す

文字化けしたCSVをそのまま上書きすると、元の文字を復元できなくなることがあります。まずCSVを複製し、原本は変更しないでください。

次にCSVの文字コードと区切り文字を確認する方法の診断で、文字コードとBOMを確認します。ファイルはブラウザ内で処理され、サーバーには送信されません。

UTF-8とBOMなしが表示された場合

CSV_ENCODING_UTF8CSV_BOM_MISSING が同時に表示されても、ファイルが壊れているとは限りません。BOMはファイル先頭に付く文字コードの目印で、UTF-8では必須ではありません。

ただし、ExcelがCSVをダブルクリックで開くとき、BOMなしのUTF-8を環境に合わない文字コードとして解釈し、日本語が崩れることがあります。この場合は拡張子や内容を変更せず、読み込み方法を変えます。

Excelで読み込み直す手順

Windows版Excelでは、一般に次の順で操作します。

  1. Excelで空のブックを開く
  2. 「データ」タブを選ぶ
  3. 「テキストまたはCSVから」を選ぶ
  4. 元のCSVを指定する
  5. プレビューの文字コードを 65001: Unicode (UTF-8) にする
  6. 区切り文字が実データと一致しているか確認する
  7. 日本語と列の分かれ方を確認して読み込む

メニュー名はExcelのバージョンにより少し異なります。「データの取得」内にある場合もあります。

先頭ゼロや長い番号も確認する

文字化けが直っても、郵便番号、商品コード、会員番号などが数値へ自動変換されることがあります。00123123 になったり、長い番号が指数表示になったりする場合は、Power Queryまたはテキストインポートで対象列を文字列として読み込みます。

読み込み後では元のゼロを推測できないため、プレビュー段階で列型を確認することが重要です。

BOM付きへ変換する場合

毎回同じ相手がダブルクリックで開く運用なら、作成元で UTF-8 BOM付き を選べるか確認します。変換する場合も、元ファイルを残し、変換後に次を比較してください。

  • 行数が同じ
  • 列数が同じ
  • 日本語が正しい
  • 先頭ゼロが残っている
  • 日付や長い番号が変わっていない

BOMを付けることは、列ずれやCSV構文の誤りを直す操作ではありません。全データが1列にまとまる場合はCSVがExcelで1列になる場合の区切り文字確認へ進みます。

UTF-8を選んでも直らない場合

診断が CSV_ENCODING_SHIFT_JISCSV_ENCODING_UTF16 を示す場合は、UTF-8ではなく表示された候補を読み込み画面で選びます。CSV_ENCODING_UNREADABLE の場合は、自動判定の対応外、破損、またはテキストではないファイルの可能性があります。

作成元に確認できるなら、次を聞くのが確実です。

  1. 出力時の文字コード
  2. 区切り文字
  3. 改行を含む値の有無
  4. Excel向けの出力設定があるか

推測した文字コードで上書きを繰り返さず、正しい条件が分かってからコピーを変換します。

参考情報

CSV・文字コード

テーマを見る