LoginSignup
7
5

More than 3 years have passed since last update.

Microsoft ExcelでCSVファイル(UTF-8)を開くと文字化けが発生する問題

Posted at

背景

UTF-8にて作成されたCSVファイルを、Microsoft Excel を使用して開くと、日本語が化けてしまっていることを経験されたことも多いかと思います。
私も、忘れた頃に、この問題に直面することがあるため、備忘録として、一度整理することにしました。

なぜ化けるのか

  • Microsoft Excelの仕様として、デフォルトでは、入力ファイルをSJISと解釈して開くようです。(というような記事を多く見かけるため、このように理解しています)
  • また、Microsoft Excelは、入力ファイルについて、UTF-8 も解釈できるようですが、厳密には、ファイルの先頭に、BOM(byte order mark)といった、3文字(0xEF 0xBB 0xBF)が付いているファイルのみ、解釈するようです。
  • ちなみに、BOMが無いファイルは、UTF-8Nという名称で区別されることがあります。
  • そして、ブラウザーからダウンロードしたCSVファイルには、UTF-8Nであることも多く、このため、Excelで開くと、文字化けしてしまうことがあります。
  • また、Pythonにて、UTF-8で書き出しているにも関わらず、BOMを付けてないことで、Excelで開くと、文字化けしてしまうことがあります。(これは、よくあるケースかと思います)

ではどうするのか

1)何かしらのプログラミング言語で出力している場合には、CSVファイルを出力する際に、BOMをつけてしまうことです。
たとえば、Pythonなら、以下のように、encoding="utf_8_sig" を付けることで対応できます。

with open(path, 'w', encoding="utf_8_sig") as f

詳細は、関連記事の2.を参考にしてみてください。

2)エディタを使う場合
サクラエディタには、BOMの有無を指定できるので、一度、ファイルを開き、BOMを指定して保存することで、BOMを付与できます。

関連記事

  1. BOMの地雷を踏み抜かない正しい文字コードとの接し方
  2. PythonでUTF-8 with BOMのCSVファイルを出力する
  3. UTF-8 BOM付き・BOM無しでハマった
7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5