「Excelで開くとCSVファイルが文字化けしている」場合の回避方法

皆さんこんにちは胡田です。

CSVファイルを開くと日本語が文字化けしてしまっていること、よくありますよね。会社で質問をもらったのですが、あまりにもよくあるケースで困っている人も多いと思いますのでブログに書いておきたいと思います。何度かMicrosoftさんにも報告させてもらっている気がするのですが、なかなか難しいところです。

いくつかパターンがあると思いますが今回対象にするのは下記のケースです。

  • ファイルの拡張子は.csv
  • 文字コードはUTF-8

UTF-8の文字コードで日本語が含まれているケースは非常に多いと思います。というか当たり前にこういう選択肢になると思うのですがこのファイルを単純にダブルクリックからExcelで開くと文字化けします…。BOMあり/無し等で挙動の違いはあるかもしれませんが、今回は文字化けするケースのお話です。

対処方法1 文字コードをSJISに変換してから開く

ExcelはSJISが大好きです。CSVファイル自体をSJISに変換してしまいましょう。

ツールはどれを使ってもいいのですが、今だと個人的には専用ツールを使うよりもVisual Studio Codeをおすすめします。

image

image

これで文字コードがSJISになってます。

このファイルを普通にExcelで開けばきちんと日本語が文字化けしない状態で開くことができます。

対処方法2 Excel上で文字コードを指定して読み込む

Excel上で読み込む時に対処することもできます。

まずExcelのみを立ち上げます。

image

image

image

文字化けしている様子も確認できますね。文字コードを正しく指定します。

image

……すいません、サンプルファイルが仕事関連のものできちんと文字化けが直ったスクリーンショットをお見せすることができませんでした。ですが「(株)」と日本語がきちんと文字化けせずに表示できていることが見えると思います。

あとは「読み込み」ボタンを押せば大丈夫です。

今回はCSVファイルを文字化けせずにExcelに読み込ませる方法を2つ紹介しました。でも、毎回対応する必要があるのが難点です…。

結局Excelが文字コードの自動判別をうまくしてくれないことが原因であり技術的には簡単に解決可能であるはずだと思っています。ですが、この挙動は何年たっても変わりません…。

私はもう自分で慣れちゃってるので何も意識せずに文字コードをコントロールしちゃうのであまり気にすらしていなかったのですが、改めてMicrosoftさんにもフィードバックして改善をお願いしたいと思いました。やります…。

もしも私がしらないだけでもっと簡単に都度対応ではなく対応できるワークアラウンドを知っている方がいたらコメント、チャット等で教えていただければと思います。

(追記)対処方法3 メモ帳で一度開いて上書きする(BOM付きにする)

Twitterにて@hdk_2さんに以下教えてもらいました。

教えてもらったとおり単にメモ帳でファイルを開いて何も編集せず「上書き保存」するだけで文字化けを回避できることを確認しました。なるほど!簡単ですね!

確認するとメモ帳で保存すると必ずBOM付きで保存してくれるようです。そして、BOM付きであればきちんとExcelも文字化けせずにUTF-8のファイルの日本語を取り扱ってくれました。

image

メモ帳だと容量の大きなファイルを開くとかなり時間がかかったりメモリ消費が大きかったり、そもそも開けないケースもありますが、容量が相対的に小さいファイルであればこれが一番お手軽かもしれないですね。

@hdk_2さんありがとうございます!

他にも方法ありましたら教えてくださいませ!

マイクロソフトさんに対処してもらおう!(投票のお願い)

https://excel.uservoice.com/forums/304921-excel-for-windows-desktop-application/suggestions/14154036-automatically-recognize-unicode-csv-file-automatic

この問題への対処を求める要望がすでに何年も前からUserVoiceに上がっています。投票が多くなれば対処される可能性も高くなりますので、この問題に遭遇してこのブログにたどり着いた方は是非上記リンクより投票(Vote)お願いします!

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for Cloud and Datacenter Management.

コメントを残す

メールアドレスが公開されることはありません。