ExcelでCSVを開いたら「繧オ繝シ繝薙せ」みたいな呪文が並んでいた——そんな経験、一度はあるはず。 業務でCSVを扱うなら避けて通れない「文字化け」は、じつは文字コードの解釈のズレという、 たった1つの原因から生まれます。この記事ではその仕組みを、図解ベースで丁寧に解説します。
文字化けはなぜ起きるのか
コンピュータは文字を数値で扱っています。たとえば「あ」という文字は、Shift_JISでは0x82A0という2バイト、 UTF-8では0xE38182という3バイトで表現されます。保存する側と読み込む側で同じ規則を使っていれば問題ありませんが、保存時はUTF-8、読み込み時はShift_JISのようにズレが起きると、コンピュータは 「間違った規則で文字を探してしまい」、結果として意味不明な文字列が表示されます。
CSVファイルにはこの「どの文字コードで保存されているか」の情報が入っていないため、開く側のアプリが 推測するか、デフォルト設定に従うしかありません。これが文字化けが起こる根本原因です。
Shift_JIS と UTF-8 — 2つの文字コードの違い
日本語のCSVを扱うとき登場する文字コードは、ほぼこの2つだけです。ざっくり特徴を比べると次の通り。
| Shift_JIS | UTF-8 | |
|---|---|---|
| 扱える文字 | ASCIIと日本語 | 世界中すべての文字 |
| 日本語1文字のサイズ | 2バイト | 3バイト |
| よく使うアプリ | Windows版Excel(既定) | Web全般、macOS、Googleスプレッドシート |
| 今後の主流 | 徐々に減少 | 事実上の世界標準 |
「BOM」の正体
Excelで文字化けを回避するキーワードとしてBOM(Byte Order Mark)があります。 これはファイルの先頭に置く「このファイルはUTF-8で書かれています」という目印です。 3バイト(EF BB BF)の不可視データで、 Excelはこれを見つけるとUTF-8として読み込んでくれます。
ただしBOMはすべての環境で歓迎されるわけではありません。たとえばプログラムがCSVを読む場合、 BOMが「最初のセルの値」として混入してしまい、バグの原因になることもあります。Excelで開くならBOM付き、プログラムで処理するならBOMなし、と用途で使い分けるのが実務的です。
文字化けの直し方
実際に文字化けしたCSVに遭遇したときの対処は、大きく分けて2つあります。
- 正しい文字コードで開き直す:メモ帳やVS Codeで開いてBOMを付けて保存し直す、 ExcelならPower Queryの「テキスト/CSVから」でエンコードを指定してインポートする方法があります。
- 変換ツールで一括変換する:大量のファイルや急ぎのときは、CSV文字コード変換ツールを使えばブラウザ上で即座にShift_JIS↔UTF-8を変換できます。ファイルはサーバーに送られません。
関連する処理
CSV処理ではエンコーディング以外にも、列の並べ替え・複数ファイルの結合・Excel形式との変換などで 詰まりやすいポイントがあります。以下のツールが役立ちます。
- CSV文字コード変換(Shift_JIS ↔ UTF-8)
- CSV ↔ Excel変換(エンコード問題を根本から回避)
- 文字コード確認ツール(何で保存されているか調べる)
- CSVマージ(複数のCSVを結合)
まとめ
CSV文字化けは「保存時の文字コードと読み込み時の解釈のズレ」が原因。 Shift_JISとUTF-8の違い、BOMの役割を理解しておけば、文字化けに遭遇しても原因切り分けが速くなります。 運用としては「UTF-8 with BOMで保存」が多くの場面で無難な選択です。