CSVファイルをExcelで読み込む際の文字化けに対処する
さまざまなシステムやアプリケーションのデータをCSV形式でエクスポートしてExcelで使用したいケースがありますが、Excelで開くと日本語が文字化けするケースがあります。
そこで文字化けの原因と対処方法を整理してみました。
文字化けする原因
CSVファイルをダブルクリックしてExcelで開く場合、CSVファイルの日本語がShift-JISであるという前提でファイルを開きます。
しかし最近のシステムやアプリケーションの中にはCSVファイルをUTF-8などの別の文字コードで出力しているケースがあります。そうすると文字コードのミスマッチが起きてしまい、UTF-8などの部分が文字化けします。
文字化けを回避する方法
CSVファイルを直接ダブルクリックして開きたい場合は「UTF-8(BOM付き)」のフォーマットにしておけば、Excelがファイルを開くときにShift-JISではなくUTF-8と判断するため、ダブルクリックで開いても文字化けしなくなります。
また、Excelを起動後に都度の操作での対応でもかまわない場合は、「データ」メニュー「外部データ読み込み」で読み込めば、元ファイルの文字コードを指定してファイルを開くことができます。
Windows で「UTF-8(BOM付き)」にする方法
「メモ帳」アプリでの保存時に「名前を付けて保存」を実行し、「文字コード」を「UTF-8(BOM付き)」にできます。
macOS で「UTF-8(BOM付き)」にする方法
Visual Studio Code をインストールしている場合は、「エンコード付きで保存」を選択し、「UTF-8 with BOM」で保存できます。
その他のmacOS標準アプリケーションでは「UTF-8(BOM付き)」に対応していないと思います(調査不十分です)
データの出力側で考慮する方法
データを出力するアプリケーション側で「UTF-8(BOM付き)」で出力しておけば、クライアント側で何か操作する必要はなくなります。
出力時のフォーマットがUTF-8の場合はファイルの先頭に "0xEF0xBB0xBF" をつけるのが最も容易ですし、文字コード不定のデータを扱う場合は nkf --overwrite --oc=UTF-8-BOM
のような方法で「UTF-8(BOM付き)」に変換する方法もあります。