CSVをExcelで開くと文字化けする理由:BOMを付ければ直る仕組み
更新日:2026-09-17
UTF-8 で保存したCSVを表計算ソフトで開くと、日本語が意味不明な文字になることがあります。原因と直し方を整理します。
なぜ化けるのか
CSVはただのテキストファイルで、どの文字コードで書かれているかという情報を持っていません。開く側は中身から推測するしかありません。
Windows版の表計算ソフトは、日本語環境では既定で Shift_JIS として読もうとします。UTF-8 で書かれたファイルを Shift_JIS として読むため、化けます。
何が起きているか
ファイルの中身(UTF-8)… E3 81 82(「あ」)
表計算ソフトが Shift_JIS として読む
→ 別の文字、または読めない文字になる
BOM を付けると直る
BOM(バイトオーダーマーク)は、ファイルの先頭に付ける3バイトの目印です。UTF-8 の場合 EF BB BF です。
この3バイトが先頭にあると、表計算ソフトは「これは UTF-8 だ」と判断して正しく読みます。ファイルの内容そのものは変わりません。先頭に目印を足すだけです。
当サイトのCSV一括変換は、書き出しの既定をUTF-8 + BOM にしています。BOMなしを既定にすると表計算ソフトで化けるためです。
BOM が邪魔になる場合もある
プログラムで読むときは注意が必要です
BOM を意識しないプログラムがCSVを読むと、1列目の見出しの先頭に見えない文字が付いた状態になります。「なぜか1列目だけ列名が一致しない」という不具合の原因になります。受け取る側がプログラムなら、BOMなしのほうが扱いやすいことがあります。
つまり、BOM を付けるかどうかは渡す相手によって変わります。
| 渡す相手 | おすすめ | 理由 |
|---|---|---|
| 表計算ソフトで開く人 | UTF-8 + BOM | そのまま開ける |
| プログラムで処理する | UTF-8(BOMなし) | 1列目に余計な文字が付かない |
| 古い業務システム | Shift_JIS | UTF-8 に対応していないことがある |
Shift_JIS で書き出す場合
相手のシステムが Shift_JIS しか受け付けない場合は、その文字コードで書き出すことになります。ただし注意点があります。
- 絵文字や一部の漢字は Shift_JIS で表せないため、失われるか別の文字になります
- 丸数字やローマ数字などの機種依存文字は、環境によって化けることがあります
変換の前に、そういった文字が含まれていないかを確認しておくと安全です。
BOM を付けずに開く方法
ファイル側を変えられない場合は、開く側で文字コードを指定する方法があります。
- 表計算ソフトの「データの取得」「テキストファイルウィザード」などから、文字コードを指定して読み込む
- ファイルをテキストエディタで開き、UTF-8 + BOM で保存し直す
- 変換ツールで書き出し直す
改行コードもあわせて確認する
CSVの標準的な仕様では、行の区切りは CRLF とされています。LF だけのファイルでも多くのソフトは読めますが、古いソフトでは1行にまとまって見えることがあります。
当サイトのツールは CRLF で書き出しています。詳しくは改行コードの違いで整理しています。
値の前後の空白
値の前後に空白がある場合、引用符で囲まないと読み込み側で削られることがあります。当サイトのツールは、前後に空白がある値を引用符で囲んで保つようにしています。
まとめ
- CSVは文字コードの情報を持たないため、開く側が推測する
- Windows版の表計算ソフトは既定で Shift_JIS として読もうとする
- 先頭に BOM(
EF BB BF)を付けると UTF-8 として正しく開ける - プログラムで読む場合は BOM が邪魔になることがある
- Shift_JIS で書き出すと、表せない文字が失われることがある
CSVを読み込んで列を選び、まとめて変換できます。文字コードを指定して保存できるので、化けたファイルの作り直しにも使えます。
CSV一括変換を使う →登録不要・完全無料/入力内容はサーバーに送信されません
この記事の位置づけ
仕様と一般的な動作を整理したものです。実際の挙動はブラウザやアプリの実装、受け取り側のシステムによって変わることがあります。業務で使う場合は、実際のデータで往復して確かめておくと安全です。
参考・出典
- RFC 3986: Uniform Resource Identifier (URI)
- RFC 4648: The Base16, Base32, and Base64 Data Encodings
- WHATWG Encoding Standard
※2026年9月時点の仕様と、主要なブラウザでの動作にもとづいています。