ExcelでCSVが文字化けする理由
文字化けの原因となる文字コードの食い違いと、3つの直し方。
CSVをExcelで開くと、日本語や、MüllerやJoséのような名前が、意味不明な記号の並びになってしまう。ユーロ記号やアポストロフィも奇妙な文字の固まりになる。データそのものに問題はありません。Excelが間違った文字コードでファイルを読み込んでいるのです。
何が起きているのか
テキストファイルはバイトの並びにすぎず、文字コードはそのバイトを文字に変えるためのルールです。今のほとんどのシステムは、あらゆる言語を扱えるUTF-8でCSVを書き出します。ところがWindowsのExcelは、CSVをダブルクリックで開くと、ファイルの先頭にバイト順マーク(BOM)という小さな目印がない限り、Shift_JISやWindows-1252のような古い地域の文字コードだと思い込んで読み込みます。BOMがないと、基本的な英数字以外の文字はすべて間違ったルールで解読され、1文字が2〜3個のでたらめな文字になります。
データは無事です。同じファイルをGoogleスプレッドシート、Numbers、テキストエディタで開けば正常に見えます。
直し方1:BOMを付ける
ファイルが正しいUTF-8で、Excelだけがおかしく表示するなら、文字化けを修正するツールにBOMのオプションをオンにして通してください。文字は変わりませんが、目印によってExcelがUTF-8として読むようになり、以後はダブルクリックでも正しく開きます。
直し方2:本物のExcelファイルに変換する
.xlsxファイルには文字コードのあいまいさがまったくありません。CSVをExcelに変換するツールはCSVを正しく読み込み、どこでも正しく開けるブックとして保存します。さらに、ExcelがCSVを直接開くと消してしまう、郵便番号や電話番号の先頭のゼロも残せます。
直し方3:ダブルクリックではなくインポートする
Excelで「データ」→「テキストまたはCSVから」を選び、「元のファイル」を「65001: Unicode (UTF-8)」にします。これでExcelが正しく読み込みます。確実な方法ですが毎回覚えておく必要があるので、人と共有するファイルには最初の2つの方法のほうが実用的です。
ファイル自体が壊れている場合
文字化けした状態がファイルに保存されてしまっていることもあります。誰かがUTF-8のファイルをExcelで開き、化けたまま保存し直した場合です。こうなると、でたらめな文字そのものがデータになっています。この場合はExcelだけでなく、どのソフトでも化けて見えます。文字化けを修正するツールには、まさにこのための修復モードがあります。二重エンコードを元に戻し、元の文字を復元します。自動モードでも、多くのファイルでこのケースを判別できます。
すぐに分かる見分け方
| 症状 | 考えられる原因 | 直し方 |
|---|---|---|
| Excelだけで化け、他では正常 | BOMがない | BOMを付けるか、.xlsxに変換する |
| どのソフトでも化ける | 誤って読み込んだ後に保存された | 二重エンコードを修復する |
| 疑問符や四角が出る | 古いWindowsの文字コードで保存されている | Windows-1252からUTF-8に変換する |
防ぐには
- Excelから書き出すときは、普通のCSVではなく「CSV UTF-8」を選ぶ。
- Excelを使う人向けに他のシステムから書き出すときは、オプションがあればBOMを付ける。
- 化けて見えるCSVは決して保存し直さない。先に文字コードを直す。