Pocket

Excelで開くと文字化けするUTF-8のCSV

CSVファイルをダブルクリックでExcelで開くと、文字化けしてることありますよね。

原因は、CSVファイルの文字コードがUTF-8になってるからです。ExcelもUTF-8に対応してますが、CSVファイルをそのまま開くとUTF-8だと認識されずにShift_JISだと思って開こうとするので文字化けしてしまいます。

文字コードの判別に失敗してるのかな?っとか思ったんですが、どうやら判別なんかせずに無条件でShift_JISとして開いてるみたいです。なので、UTF-8のCSVは必ず文字化けします。

これを何とかする方法です。

CSVファイルの文字コードをUTF-8からShift_JISに変換する

CSVファイル自体の文字コードの変換が必要な方法です。

ExcelがUTF-8じゃなくてShift_JISで開こうとするなら、そもそもShift_JISにしとけば良いんじゃない? という発想です。一番簡単な方法で、ネットでもよく紹介されてます。

Windowsに標準のメモ帳でも出来ます。一度開いて、文字コードをShift_JISに変換して保存し直せはOK。変換したCSVファイルをダブルクリックで開いてもちゃんと表示されます。

メモ帳でUTF-8からShift_JISに変換して保存する

メモ帳でUTF-8からShift_JISに変換して保存する

ただ、ちょっと問題が。。。UTF-8に固有の文字が変換されずに削除されるか、■みたいなものに変わってしまいます。変な記号などがない場合は良いんですが、UTF-8固有の文字が入ってると実質的には使えない方法です。

外部データの取り込みでUTF-8にする

あらかじめCSVファイル自体の文字コードの変換が不要な方法です。

Excelを起動して、データ>外部データの取り込み>テキストファイルを選びます。

外部データの取り込みでCSVファイルを開く

外部データの取り込みでCSVファイルを開く

テキストファイルウィザードが起動するので、65001 : Unicode (UTF-8) を選んで進みます。プレビューでちゃんと見えてるか確認して下さい。上手く見えない場合は、CSVファイルがUTF-8じゃないかもしれません。

テキストファイルウィザードでUTF-8を選ぶ

テキストファイルウィザードでUTF-8を選ぶ

CSVファイルを加工しなくていという面ではメリットありますが、毎回、これをするのはとても面倒くさいという最大の問題があります。後、改行が入ってるとうまく行かないCSVファイルがあります。

データに改行があるCSVファイルを開く外部データの取り込みで開くとおかしくなる

データに改行があるCSVファイルを開く外部データの取り込みで開くとおかしくなる

CSVファイルにUTF-8のBOMをつける

僕はいつもこの方法でやってます。

CSVファイルの文字コードはUTF-8のままで、BOMをつけるだけです。BOMをつけると、ExcelがUTF-8だと判断してくれてShift_JISじゃなくてUTF-8としてCSVを開いてくれます。

Windowsのメモ帳でも出来ます。一度、CSVファイル(UTF-8のはずです)をメモ帳で開いて、そのまま上書き保存するだけです。メモ帳はUTF-8で保存すると勝手にBOMがつきます。(逆にいうとBOM無しでは保存できないという事です)

メモ帳でそのまま上書き保存

メモ帳でそのまま上書き保存

Shift_JISへ変換すると失われる文字問題も発生せずに、外部データの取り込みの面倒くささも無く、改行があってもちゃんと処理されて開けます。個人的には一番ベストな方法かと思います。

ただ、このCSVファイルをExcelで見る以外に使う場合は要注意。例えば、サーバーでPHPやCGIに読み込ませたり、他のソフト(例えば住所録とか)でインポートする場合、BOMがついてると上手く行かないかもしれません。

まとめ

UTF-8のCSVファイルを文字化けさせずにExcelで開くには、ちょっと一手間必要です。でも、最後のBOM付ける方法が一番簡単で楽な方法かと思います。

Windowsのメモ帳でそのまま上書き保存するだけで、文字コードの変換なしでダブルクリックで開けるというのがすごく便利ですよね。良ければ、お試し下さい!

お知り合いに、紹介してもらえませんか?

いつも、読んでいただきありがとうございます。もしこの内容に価値があると思われたら、お知り合いにも紹介してもらえると、とても嬉しいです!

Pocket