# CSVの文字化けを直す方法｜ExcelでUTF-8を正しく開く

- 正規URL: https://oka-project.com/blog/csv-mojibake-excel
- 公開: 2026-09-20 ／ 更新: 2026-09-25
- 著者: oka（https://oka-project.com/about）
- 要約: CSVの文字化けを直す方法を、Excelの読み込み・UTF-8・BOM・CP932から切り分けます。「日本語」の実バイト列も比較し、まずファイルを変換せず直す手順を解説します。
- 分類: guide ／ タグ: CSV, Excel, 文字化け, UTF-8, Shift_JIS

---
CSVをExcelで開いたら、日本語が「繧」「縺」などの文字に変わって読めなくなることがあります。

この症状は、CSVの中身が壊れているとは限りません。**ファイルの文字コードと、Excelがそのファイルをどの文字コードとして読んだかが一致していない**ときに起きることがあります。

> [!NOTE]
> **結論**: UTF-8のCSVが文字化けした場合は、まずExcelの「データ」→「テキスト/CSVから」で読み込み直します。Microsoftは、UTF-8 CSVがBOM付きなら通常オープンでき、BOMなしならPower Query等から読み込めると案内しています。  
> **確認日**: 2026年9月15日。Microsoft SupportとPower Queryの現行仕様を確認しています。  
> **注意**: 文字化けした状態で上書き保存する前に、元CSVをコピーして残してください。

## まず「開き方の問題」か「ファイル自体の問題」かを分ける

文字化けしたとき、最初にファイルを変換する必要はありません。

- **別のエディタやシステムでは正しく読める** → Excel側の読み込み方法を疑う
- **どこで開いても同じ文字が壊れている** → 元ファイルの書き出し時点で情報が失われた可能性を疑う
- **文字は読めるが列がずれる** → 文字コードではなくDelimiter・引用符・改行を疑う
- **`�`や`?`へ置換されている** → すでに不可逆な変換が起きた可能性を確認する

この切り分けを先にすると、「とりあえずShift_JISへ変換」のような二次事故を避けやすくなります。
## 最初に試す：Excelの「テキスト/CSVから」で開く

Microsoftは、UTF-8のCSVを正しく開く方法として、次の2つを案内しています。

- UTF-8 BOM付きなら通常どおり開く
- BOMなしなら、Power Queryまたは「テキスト/CSVから」で読み込む

参考：[Microsoft Support「Excel で CSV UTF-8 ファイルを正しく開くには」](https://support.microsoft.com/ja-jp/excel/opening-csv-utf-8-files-correctly-in-excel)

Excelでは次の順で試します。

1. 文字化けしたCSVをいったん閉じる
2. Excelで空のブックを開く
3. 「データ」を開く
4. 「テキスト/CSVから」を選ぶ
5. 対象のCSVを選ぶ
6. プレビューで文字コードと区切り文字を確認する
7. 日本語が正しく表示された状態で読み込む

これで直るなら、CSV自体を別形式へ変換する必要はありません。

## CSVの文字化けは「文字コードの不一致」で起きる

CSVは、行と列を表すためのテキストファイルです。

ただし、同じ日本語でも保存時の文字コードが違えば、実際のバイト列は異なります。

日本語CSVでよく見るのは、

- UTF-8
- UTF-8 BOM付き
- Shift_JIS系

です。

たとえばUTF-8で保存されたバイト列を、別の文字コードとして読むと、本来の日本語とは違う文字列として解釈されます。

つまり、文字化けは「表示フォントが変」という問題ではなく、**バイト列の読み方が違う**問題です。

### 実例：「日本語」はUTF-8とCP932で別のバイト列になる

文字コードの違いを具体的に見るため、文字列 `日本語` をPython 3.13.5でUTF-8とCP932へエンコードしました。

```text:utf8.txt
UTF-8 : e6 97 a5 e6 9c ac e8 aa 9e
```

```text:cp932.txt
CP932 : 93 fa 96 7b 8c ea
```

同じ3文字でも、保存されるバイト列は違います。

UTF-8のバイト列をCP932として無理に読むと、今回の例では厳密なデコード時にエラーになり、置換を許可すると次のような文字列になりました。

```text:wrong-decode.txt
譌･譛ｬ隱�
```

これはフォントが壊れたのではなく、**同じバイト列を別の文字コードの規則で解釈した結果**です。

> [!NOTE]
> この例はUTF-8とWindowsのCP932を区別するための再現です。CP932は一般に「Shift_JIS系」として扱われますが、厳密にはJIS X 0208のShift_JISそのものと完全同一ではありません。
### 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「コード ページ識別子」](https://learn.microsoft.com/ja-jp/windows/win32/intl/code-page-identifiers)

ただし、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」](https://learn.microsoft.com/ja-jp/power-query/connectors/text-csv)
### Power Queryでは文字コードや区切り文字を扱える

MicrosoftのPower Queryでは、CSVの区切り文字や文字コードを指定できます。

Power Query Mの`Csv.Document`では、既定のDelimiterはカンマ、既定Encodingは65001（UTF-8）です。

参考：[Microsoft Learn「Csv.Document」](https://learn.microsoft.com/ja-jp/powerquery-m/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のバイト列は残っています。

しかし、誤った読み方で文字列へ変換された状態を保存し直すと、元の情報を復元できない場合があります。

まず、

1. 元CSVをコピー
2. コピー側で読み込み方法を変更
3. 正しく読める文字コードを確認
4. 必要なら別ファイルとして書き出す

の順に進めます。


## まとめ

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を試す方が安全です。

### 文字化けした状態で保存してしまいました

元ファイル、再ダウンロード元、バックアップを先に探してください。置換文字へ変わった状態を保存している場合は、元情報を完全に戻せないことがあります。