先に要点
CSV はただのテキストファイルなのに、なんで Excel で開くと日本語だけ文字化けするの? というのは本当によくある悩みです。
しかも厄介なのは、CSV 自体が壊れているとは限らないことです。ファイルは正しいけれど、Excel の開き方や解釈が違うだけ ということがかなりあります。
この記事では、CSV を Excel で開くと文字化けする理由を、文字コードのズレ、UTF-8、BOM、Excel の開き方という順で整理します。
何を選べば防げるか が分かるように、実務向けにまとめます。
結論:CSV自体より「Excelがどう読むか」が問題になりやすい
先に結論を書くと、CSV を Excel で開いたときの文字化けは、CSV の中身が壊れている のではなく、Excel が想定と違う文字コードで読んでいる ことが多いです。
つまり、
- CSV を作る側の文字コード
- Excel が開くときの解釈
が一致していないと、日本語だけ崩れやすくなります。
そもそもCSVは「文字コード付きの表形式テキスト」ではない
ここが最初のポイントです。
CSV は、データをカンマ区切りなどで並べたテキスト形式ですが、ファイル形式として「必ず UTF-8 で読む」みたいな強い約束があるわけではありません。
そのため、同じ CSV でも、
- UTF-8 で保存されている
- Shift_JIS で保存されている
- UTF-16 で保存されている
のような違いがありえます。
そして Excel は、開き方や環境によって この CSV はこの文字コードだろう と推測しながら開くことがあります。
ここで推測が外れると、文字化けして見えます。
典型的な原因
1. UTF-8 の CSV を、Excel が別の文字コードとして開く
一番ありがちなのはこれです。
CSV を UTF-8 で出力していても、Excel が
- 日本語 Windows での従来の文字コード寄り
- 別の既定解釈
として開くと、日本語だけ崩れることがあります。
このとき、
- 英数字はだいたい読める
- 日本語だけ変になる
- 記号や一部の特殊文字も崩れる
という見え方になりやすいです。
つまり CSV を UTF-8 にしたのに壊れた のではなく、UTF-8 のまま正しく読まれていない だけ、というケースです。
2. BOM がない UTF-8 CSV をそのまま開いた
Microsoft 公式では、UTF-8 でエンコードされた CSV は、BOM 付きで保存されている場合は通常どおり開ける と案内されています。
逆に言うと、BOM がない UTF-8 CSV は、そのまま開く と解釈がズレることがあります。
ここが重要です。
UTF-8 だから安全 ではなく、Excel が UTF-8 と認識しやすい形か まで見ないといけません。
3. Shift_JIS 前提の運用と UTF-8 前提の運用が混ざっている
日本語の業務システムでは、今でも CSV を Shift_JIS 前提で扱う場面があります。
そこへ UTF-8 CSV をそのまま流すと、Excel 側が従来の感覚で開いて文字化けすることがあります。
実務では、
- システムAは UTF-8
- システムBは Shift_JIS 前提
- でもユーザーは全部 Excel で開く
というズレが起きやすいです。
4. ダブルクリックで開くのと、取り込みで開くのが違う
これも大事です。
CSV は ファイルを開く のと、Excel の データ取り込み から開くのとで挙動が違うことがあります。
Microsoft 公式でも、BOM がない UTF-8 CSV を扱うときは、
データタブからテキスト/CSVから- あるいは
テキストからデータを取得
の方法が案内されています。
つまり、開き方自体が回避策 です。
どういう見え方ならこの問題を疑うか
次のような症状なら、Excel の文字コード解釈ズレを疑いやすいです。
- 英数字は正常だが、日本語だけ崩れる
- 同じ CSV をテキストエディタで開くと正常
- システム上のプレビューやブラウザでは正常
- Excel に取り込み直すと正常になる
この場合、CSV ファイルそのものより、Excel の開き方 が原因である可能性が高いです。
防止方法
1. UTF-8 + BOM で出力する
Excel での実務互換を重視するなら、まず有力なのがこれです。
Microsoft 公式でも、UTF-8 CSV は BOM が付いていれば通常どおり開ける と案内されています。
なので、ユーザーがダブルクリックで開く 前提が強いなら、
- UTF-8
- 可能なら BOM 付き
という方針はかなり有効です。
ただし、BOM を嫌うツールや処理系もあるので、CSV の利用先が Excel 中心かどうか は見た方がよいです。
2. Excel では「開く」より「取り込む」を案内する
CSV を配る側ができることは、ファイルだけ出すことではありません。
どう開くべきか を伝えるのも実務です。
Microsoft 公式の案内どおり、
データタブファイルからデータを取得テキスト/CSVから
の流れで開くと、文字コードを踏まえて読み込みやすくなります。
つまり、ユーザーに ダブルクリックしないでください ではなく、この手順で取り込んでください を案内する方が親切です。
3. 利用先が古い Excel 運用なら Shift_JIS も検討する
これは 常に UTF-8 が正義 という話ではありません。
利用者がほぼ日本語版 Excel だけで、システム連携も Shift_JIS 前提なら、実務上は Shift_JIS CSV の方がトラブルが少ないことがあります。
ただしその場合も、
- Unicode の一部文字が扱いづらい
- 文字種によって表せないものがある
- 他システム連携で UTF-8 と混ざると面倒
といったデメリットがあります。
つまり、Excel だけ見るか 将来の再利用まで見るか で判断が変わります。
4. ダウンロード前にサンプル確認する
CSV 出力機能を作る側なら、
- Excel で直接開く
- Excel の取り込みで開く
- メモ帳や VS Code で開く
を最低限確認した方が安全です。
ブラウザで出せたからOK だと、実際の利用者環境で文字化けが出やすいです。
実務でどう作り分けるべきか
パターン1: 受け手がほぼ Excel ユーザー
この場合は、
- UTF-8 + BOM
- あるいは利用環境によって Shift_JIS
を検討しつつ、Excel での開き方も案内する のが安定です。
パターン2: システム連携や再利用が多い
この場合は、まず UTF-8 でそろえる方が後々扱いやすいです。
ただし Excel ユーザー向けには、取り込み手順を別で用意した方がよいです。
パターン3: 社内向け配布で運用を固定できる
この場合は、
- 形式は UTF-8
- 開き方は Power Query で統一
のように、運用ルールで吸収しやすいです。
すでに文字化けして見えるときは?
まず大事なのは、すぐ保存し直さないこと です。
見た目が崩れているだけなら、元の CSV のバイト列は無事かもしれません。
やる順番は次です。
- 元の CSV をコピーして残す
- テキストエディタで開いて正常か確認する
- Excel の取り込み手順で開き直す
- 必要なら UTF-8+BOM 付きで再出力する
ここで崩れた状態のまま保存すると、単なる表示ズレではなく、本当に壊したデータになることがあります。
よくある勘違い
1. UTF-8 にすれば絶対大丈夫
UTF-8 自体はよい選択ですが、Excel がどう認識するかまで見ないと足りません。
特に そのまま開く 運用では BOM の有無や開き方が効きます。
2. Excel で文字化けした = CSV が壊れている
これはよくある誤解です。
テキストエディタでは正常に見えるなら、CSV 自体は無事なことが多いです。
3. 文字化けした状態で保存してもあとで戻せる
これは危ないです。
表示ズレの段階なら戻せても、崩れた結果で上書きした後は戻しにくくなります。
まとめ
CSV を Excel で開くと文字化けするのは、CSV の文字コードと、Excel の読み方が一致していない ことが多いからです。
特に UTF-8 の CSV は、BOM の有無や開き方によって、Excel での結果が変わります。
防止の基本は次の通りです。
- Excel で直接開かれるなら UTF-8+BOM を検討する
- 取り込み手順を案内する
- 利用先が Excel 中心か、システム連携中心かで文字コード方針を決める
- 文字化けして見えたら、まず元ファイルを残して開き方を変えて試す
要するに、CSV の問題というより、Excel と CSV の間で文字コードの約束が曖昧なまま使われること が本当の原因です。
この記事と一緒に読みたい
参考リンク
- Microsoft Support: Opening CSV UTF-8 files correctly in Excel
- Microsoft Support: Import or export text (.txt or .csv) files