CSVの文字化けを直す方法を、Excelの読み込み・UTF-8・BOM・CP932から切り分けます。「日本語」の実バイト列も比較し、まずファイルを変換せず直す手順を解説します。
目次(10)
CSVをExcelで開いたら、日本語が「繧」「縺」などの文字に変わって読めなくなることがあります。
この症状は、CSVの中身が壊れているとは限りません。ファイルの文字コードと、Excelがそのファイルをどの文字コードとして読んだかが一致していないときに起きることがあります。
まず「開き方の問題」か「ファイル自体の問題」かを分ける
文字化けしたとき、最初にファイルを変換する必要はありません。
- 別のエディタやシステムでは正しく読める → Excel側の読み込み方法を疑う
- どこで開いても同じ文字が壊れている → 元ファイルの書き出し時点で情報が失われた可能性を疑う
- 文字は読めるが列がずれる → 文字コードではなくDelimiter・引用符・改行を疑う
�や?へ置換されている → すでに不可逆な変換が起きた可能性を確認する
この切り分けを先にすると、「とりあえずShift_JISへ変換」のような二次事故を避けやすくなります。
最初に試す:Excelの「テキスト/CSVから」で開く
Microsoftは、UTF-8のCSVを正しく開く方法として、次の2つを案内しています。
- UTF-8 BOM付きなら通常どおり開く
- BOMなしなら、Power Queryまたは「テキスト/CSVから」で読み込む
参考:Microsoft Support「Excel で CSV UTF-8 ファイルを正しく開くには」
Excelでは次の順で試します。
- 文字化けしたCSVをいったん閉じる
- Excelで空のブックを開く
- 「データ」を開く
- 「テキスト/CSVから」を選ぶ
- 対象のCSVを選ぶ
- プレビューで文字コードと区切り文字を確認する
- 日本語が正しく表示された状態で読み込む
これで直るなら、CSV自体を別形式へ変換する必要はありません。
CSVの文字化けは「文字コードの不一致」で起きる
CSVは、行と列を表すためのテキストファイルです。
ただし、同じ日本語でも保存時の文字コードが違えば、実際のバイト列は異なります。
日本語CSVでよく見るのは、
- UTF-8
- UTF-8 BOM付き
- Shift_JIS系
です。
たとえばUTF-8で保存されたバイト列を、別の文字コードとして読むと、本来の日本語とは違う文字列として解釈されます。
つまり、文字化けは「表示フォントが変」という問題ではなく、バイト列の読み方が違う問題です。
実例:「日本語」はUTF-8とCP932で別のバイト列になる
文字コードの違いを具体的に見るため、文字列 日本語 をPython 3.13.5でUTF-8とCP932へエンコードしました。
UTF-8 : e6 97 a5 e6 9c ac e8 aa 9e
CP932 : 93 fa 96 7b 8c ea
同じ3文字でも、保存されるバイト列は違います。
UTF-8のバイト列をCP932として無理に読むと、今回の例では厳密なデコード時にエラーになり、置換を許可すると次のような文字列になりました。
譌・譛ャ隱�
これはフォントが壊れたのではなく、同じバイト列を別の文字コードの規則で解釈した結果です。
BOMとは何か
BOMはByte Order Markの略です。
UTF-8では、ファイル先頭にEF BB BFという3バイトを付けることがあります。
Microsoft Supportは、UTF-8 CSVについて、BOM付きならExcelで通常どおり開けると案内しています。
BOMはCSVの本文そのものではなく、読み込み側がUTF-8と判断する手掛かりとして使われます。
そのため、
UTF-8 CSVなのにダブルクリックで文字化けする → UTF-8 BOM付きへ変えるとExcelで開きやすくなる
というケースがあります。
ただし、BOMを付けることが常に正解ではありません。渡し先のシステムがBOMなしUTF-8を要求する場合もあります。
Shift_JISなら文字化けしない、とは限らない
古い業務システムや日本向けソフトではShift_JIS系のCSVを前提にしていることがあります。
Windowsではコードページ932がShift_JISとして扱われています。
参考:Microsoft Learn「コード ページ識別子」
ただし、Shift_JISはUnicodeのすべての文字を表現できる形式ではありません。
絵文字、一部の記号、Unicode固有文字などはShift_JISへ変換できない場合があります。
そのため、Excelで開けるようにするためだけに何でもShift_JISへ変換するのは避けた方が安全です。
文字化けしたときの切り分け表
| 状況 | 最初に試すこと |
|---|---|
| UTF-8 CSVをExcelでダブルクリックすると文字化け | 「テキスト/CSVから」でUTF-8として読み込む |
| UTF-8 BOM付きCSV | 通常オープンで正しく読めるか確認 |
| 古い業務システムへ渡す | そのシステムが要求する文字コードを確認 |
| Shift_JISへ変換したい | 表現できない文字がないか先に確認 |
| 文字化け状態で保存してしまった | 元ファイルを探し、復元可能か別に判断 |
| 列もずれている | 文字コードではなく区切り・引用符も確認 |
文字化けと列ずれは別問題なので、同時に起きている場合は分けて確認します。
Excel側の読み込みを確認する
Excelは文字コードを常に自動判定してくれるわけではない
Microsoftの2026年更新のPower Query Text/CSV connectorドキュメントでは、character setは常に自動推定されるわけではなく、UTF-8はUTF-8 BOMで始まる場合に推定されると説明されています。
つまり「Excelで文字化けした=CSVが壊れている」ではなく、読み込み側が意図したエンコーディングを選べていないだけのケースがあります。
参考:Microsoft Learn「Power Query Text/CSV connector」
Power Queryでは文字コードや区切り文字を扱える
MicrosoftのPower Queryでは、CSVの区切り文字や文字コードを指定できます。
Power Query MのCsv.Documentでは、既定のDelimiterはカンマ、既定Encodingは65001(UTF-8)です。
参考:Microsoft Learn「Csv.Document」
Excelだけで作業が完結するなら、まずPower Queryや「テキスト/CSVから」で正しく読み込めるか確認する方が安全です。
すぐShift_JISへ変換しない方がよい理由
検索すると「Excelで文字化けするならShift_JISへ変換」と説明されることがあります。
しかし、Excelで読むだけならPower Queryや「テキスト/CSVから」で解決できる場合があります。Shift_JISへ変換すると、元のUTF-8に含まれていた文字を表現できない可能性があります。
特に、
- 絵文字
- 一部の記号
- 多言語文字
- Unicode固有の文字
を含む場合は、変換そのものが情報損失を起こさないかを確認してから書き出すべきです。
変換が必要なのはどんなとき?
専用ツールが必要になるのは、たとえば次のような場合です。
- 毎回文字コードを判断するのが難しい
- UTF-8 BOM付きで書き出したい
- Shift_JISへ変換する前に失われる文字を確認したい
- 区切り文字や引用符の問題も同時に調べたい
- 文字化け・列ずれ・空行など複数問題が混ざっている
- 元ファイルを上書きせず、変換前後を比較したい
文字化けしたまま上書きしない
最も避けたいのは、Excel上で文字化けしている状態のまま保存し直すことです。
開いただけなら、元CSVのバイト列は残っています。
しかし、誤った読み方で文字列へ変換された状態を保存し直すと、元の情報を復元できない場合があります。
まず、
- 元CSVをコピー
- コピー側で読み込み方法を変更
- 正しく読める文字コードを確認
- 必要なら別ファイルとして書き出す
の順に進めます。
まとめ
CSVをExcelで開いて文字化けしたら、最初にファイル変換サイトへ送る必要はありません。
まずExcelの「データ」→「テキスト/CSVから」で読み込み直し、UTF-8として正しく表示できるか確認します。
UTF-8 BOM付きなら通常オープンしやすく、古い業務システムではShift_JIS系を要求されることもあります。ただしShift_JISはすべてのUnicode文字を表現できません。
文字化けは「どの文字コードで保存されているか」と「どの文字コードで読んだか」を分けて確認する。 これが最初の切り分けです。
よくある質問
CSVをダブルクリックすると文字化けします。ファイルは壊れていますか?
必ずしも壊れていません。BOMなしUTF-8などをExcelが意図した文字コードで読めていないだけのケースがあります。まず「テキスト/CSVから」で読み直してください。
UTF-8 BOM付きにすれば必ず正解ですか?
Excelで直接開く用途には向きますが、外部システムがBOMなしUTF-8を要求する場合もあります。受け側の仕様を優先します。
Shift_JISへ変換すればExcelで読めますか?
読める場合はありますが、Shift_JISで表現できない文字が失われる可能性があります。Excelだけが目的なら、先にPower Queryを試す方が安全です。
文字化けした状態で保存してしまいました
元ファイル、再ダウンロード元、バックアップを先に探してください。置換文字へ変わった状態を保存している場合は、元情報を完全に戻せないことがあります。