0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

出力したCSVがExcelで文字化けバグ!検証と対処法との備忘録

Last updated at Posted at 2024-12-30

csvファイルを出力して、Excelで見ると文字化けしてしまった🥲

先に結論

csvファイルの文字コードを

  • Macなら UTF-8 with BOM にする!
  • Windowsなら Shift JIS にする!
  • (少なくともMacユーザー→Macユーザーへ)SlackでUTF-8 with BOMを送付すると、BOMが消滅してUTF-8に変換される

原因と解決法の調査

まず、作成しているアプリでは、データをcsvファイルとしてダウンロードする機能を実装していたが、そのファイルをExcelで開くと文字化けしてしまっていた。ガビーン

調べると、Excelでは文字コードがUTF-8 with BOMShift JISではないと文字化けすることがわかった!

(アプリで出力するcsvファイルの文字コードは UTF-8 だった)

MacでBOM付きファイルを生成する

上記の調査が正しいか検証するために、試しにUTF-8 with BOMのファイルを生成したかったが、MacのVSCodeではできなかった。おそらくWindowsならできるのかも。

Macだと「CotEditor」でUTF-8 with BOMに変換できた。

image.png

image.png

BOM付きに変換したcsvファイルでweb版のExcelを開くと、文字化けが直っていた!🎉

BOM付きファイルの罠

web版での検証だったので、念のためMacユーザーだけどdesktop版のExcelアプリを持っている人BOM付きCSVファイルをSlackで送付して確認してもらった。

すると、なんとまだ文字化けしたままだった🥲

さらに原因を特定するために、

  1. UTF-8のcsvファイル
  2. CotEditorでBOM付きに変換したファイル
  3. 自作したアプリ上でBOM付きに変換したファイル
  4. Shift JIS に変換したファイル

を用意して、Windowsユーザーの方にweb版とdesktop版のエクセルそれぞれで見てもらった。

結果は、「Shift JIS に変換したファイル」のみ文字化けが直っていた。


さらにさらに原因を特定するために、

windowsユーザーの方に上記の4つのファイルの文字コードをVSCodeで確認してもらったところ、

  1. UTF-8のcsvファイル: UTF-8
  2. CotEditorでBOM付きに変換したファイル: UTF-8 ←❗️
  3. 自作したアプリ上でBOM付きに変換したファイル: UTF-8 ←❗️
  4. Shift JIS に変換したファイル: Shift JIS

となっていた...!!

なんで、2と3もUTF-8なんじゃ...???


そこで、相手のPC上でUTF-8 with BOMのcsvファイルを作成してもらって、VSCodeで文字コードを確認すると、UTF-8 with BOMにちゃんとなっていた!

そのUTF-8 with BOMのcsvファイルをweb版とdesktop版のExcelで開くと、文字化けが直っていた!!

もしや、SlackでUTF-8 with BOMファイルを送信するとBOMが消える??

上記の検証結果から推測するに、UTF-8 with BOMファイルならちゃんと文字化けは直るが、スSlackで送付してダウンロードしたファイルはBOMが消失する(少なくともMacユーザーの場合)。

2人のMacユーザーにSlackでUTF-8 with BOMファイルを送信して、文字コードを確認するとやはりUTF-8BOM無しになっていた!

結論:BOMは消えることがある

上記の検証から、少なくともMacユーザー→MacユーザーへSlackでファイルを送付し、ダウンロードしてもらうとBOMが消えることが判明しました。

アプリをデプロイし、Windowsユーザーの人にアプリ上からBOM付き変換処理をしたCSVファイルをダウンロードしてもらうと、ちゃんとExcelでの文字化けは直っていました🎊

ヌギーのSNS(連絡先など)

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?