CSVをExcelで開くと文字化けする原因と、確実に直す手順
文字化け・文字コードのコラム
業務システムやWebサービスからCSVをダウンロードして、Excelでそのまま開いたら、日本語がすべて崩れていた。
CSVを扱っていると、かなりの確率で遭遇する現象だと思います。
原因はExcelの不具合ではなく、ファイルに書かれた文字コードと、Excelが想定した文字コードが食い違っていることにあります。
今回は、なぜ食い違うのかと、元データを作り直さずに直す手順を紹介します。
なぜExcelだけ文字化けするのか
近年のシステムが出力するCSVは、世界標準として広く使われている UTF-8 で保存されているものが多くなっています。
一方、日本語版のExcelは歴史的な経緯から、CSVファイルを Shift_JIS(正確にはその拡張であるCP932)として読もうとする挙動が残っています。
そのため、UTF-8で書かれた日本語を、ExcelがShift_JISだと思い込んで開いてしまい、化けた文字が並ぶことになります。
たとえば「東京都」というUTF-8の3文字は、Shift_JISとして読むと次のように表示されます。
譚ア莠ャ驛ス
ExcelにもUTF-8を読む機能はあるのですが、ファイルの先頭に「これはUTF-8です」という目印が付いていないと判断できません。
この目印が BOM(Byte Order Mark)と呼ばれるもので、UTF-8の場合は3バイトの短い印が先頭に入るだけです。
直し方は3通り
BOMが無いことが原因なので、対処は「BOMを付ける」「Shift_JISに変換する」「Excel側で読み方を指定する」の3方向になります。
- BOM付きUTF-8に変換する(推奨): 目印を足すだけなので、文字が失われません。絵文字や特殊記号を含むデータでも安全です。
- Shift_JISに変換する: 古いシステムに取り込む場合はこちらが必要になることもあります。ただしShift_JISで表現できない文字(絵文字、一部の記号や漢字)は変換時に失われます。
- Excelの「データ」タブから読み込む: ダブルクリックで開かず、インポート機能で文字コードを指定する方法です。ファイル自体は変更されませんが、毎回この操作が必要になります。
※手順や名称はExcelのバージョンによって異なります。
日常的にCSVを受け取る立場であれば、1番目のBOM付きUTF-8への変換がいちばん手数が少なく、データも欠けません。
変換のときに注意したいこと
CSVをオンラインの変換サービスにアップロードする形だと、顧客情報や売上データがそのまま外部のサーバーへ送られることになります。
社内規程で止まる場面も多いところかと思います。
MojiRescueの CSV変換ページ は、ファイルをブラウザの中だけで処理していて、外部に送信しません。
「Excelで開ける形式にする」のボタンひとつで、BOM付きUTF-8とCRLF改行に揃えたファイルをダウンロードできます。
なお、変換で直せるのは文字コードの解釈違いによるものだけです。
元のファイルの時点ですでに文字が失われている場合は、変換しても戻りません。
そのあたりの見分け方は別のコラムにまとめています。
ファイルの文字コードをブラウザ内で変換
MojiRescueなら、ファイルをドロップするだけで文字コード・BOM・改行コードを変換できます。ファイルは外部に送信されません。