先に、答え。

まず元のCSVを保存し、Excelの「データ」から文字コードを指定して取り込みます。UTF-8のCSVならUTF-8を選び、プレビューで日本語を確認してから読み込みます。

この記事の内容

対象・検証範囲:Windows版Excelのインポート手順。Microsoft公式資料の確認のみ。実機未検証。

どの文字化けを直す記事か

CSVをExcelでダブルクリックすると商品名が読めないのに、テキストエディターでは「ノート」「ペン」と読める。ここで扱うのは、このように元の文字は残っているが、開き方が合っていないケースです。

文字化けした状態で保存すると、元に戻せない変換が入ることがあります。編集前のCSVを別名で保管し、取り込みはコピーで試してください。最初から文字が「?」に置き換わっている場合、文字コードを変えるだけでは復元できません。

文字コードを指定して取り込む

次はWindows版Excelのデータ取り込みを前提にした手順です。バージョンや表示言語で項目名が変わることがあります。

  1. 空のブックを開き、データ → テキストまたはCSVからを選びます。環境によっては「データの取得 → ファイルから」の中にあります。
  2. 元のCSVのコピーを選択します。
  3. プレビューで文字コード・ファイルの元の形式を確認します。UTF-8のファイルなら「65001: Unicode (UTF-8)」に相当する選択肢を指定します。
  4. 区切り記号がカンマになっているかを確認します。日本語が直っても、全体が1列なら区切り設定を別途直します。
  5. IDなどの列がある場合は「データの変換」に進み、その列を文字列として取り込む設定を確認します。
  6. 日本語・列数・IDを確認して読み込み、編集結果を残すならまずExcelブック形式で保存します。

UTF-8を選んでも直らないときは、ファイルの出力元で文字コードを確認してください。「日本語のCSVだからShift_JIS」とは決められません。

入力例と確認する結果

元のCSVが次の内容なら、読み込んだ表でも同じ文字が見えることを確認します。

id,name
001,ノート
002,ペン
確認対象 期待する状態 違う場合に見直す点
商品名 ノート、ペン 文字コード
id と name の2列 区切り記号
ID 001、002 列の型・自動変換

先頭のゼロが消える問題は文字化けとは別です。日本語が直った時点で完了にせず、先頭のゼロを保持する取り込み方も確認してください。

BOM付きUTF-8なら解決する?

Microsoftは、BOM付きのUTF-8 CSVなら通常の方法で開けると案内しています。BOMはファイルの先頭に付く識別用のバイト列です。ただし、BOMを付けても列の型までは指定できません。先頭のゼロや長い番号を守るには、取り込み時の型指定が必要です。

自分でCSVを出力する側なら、PythonでBOM付きUTF-8を扱う方法を使えます。受け取り側のシステムがBOMなしを要求する場合には、勝手にBOMを追加しないでください。

直らないときの切り分け

  • 日本語だけ崩れる: 出力元でUTF-8、CP932などの指定を確認し、元ファイルを取り込み直します。
  • すべて1列になる: カンマではなくタブやセミコロン区切りの可能性があります。
  • 引用符や改行で行がずれる: CSVの引用符構造が壊れている可能性があります。見た目の改行数だけではレコード数を判断できません。
  • エディターでも「?」になる: 変換時に文字が失われた可能性があります。出力元からの再取得を優先します。

本記事ではExcelの画面を実機操作していません。公式手順と異なる表示の場合は、お使いのExcelのヘルプで「テキストまたはCSVから」を確認してください。読み込み後の文字・型・列が元データと一致することが、成功の判定です。

参考にした公式資料

公式資料に基づく説明です。アプリの画面操作は本制作環境では実機検証していません。 編集・検証方針