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 BOMかShift JISではないと文字化けすることがわかった!
(アプリで出力するcsvファイルの文字コードは UTF-8 だった)
MacでBOM付きファイルを生成する
上記の調査が正しいか検証するために、試しにUTF-8 with BOMのファイルを生成したかったが、MacのVSCodeではできなかった。おそらくWindowsならできるのかも。
Macだと「CotEditor」でUTF-8 with BOMに変換できた。
BOM付きに変換したcsvファイルでweb版のExcelを開くと、文字化けが直っていた!🎉
BOM付きファイルの罠
web版での検証だったので、念のためMacユーザーだけどdesktop版のExcelアプリを持っている人BOM付きCSVファイルをSlackで送付して確認してもらった。
すると、なんとまだ文字化けしたままだった🥲
さらに原因を特定するために、
- UTF-8のcsvファイル
- CotEditorでBOM付きに変換したファイル
- 自作したアプリ上でBOM付きに変換したファイル
- Shift JIS に変換したファイル
を用意して、Windowsユーザーの方にweb版とdesktop版のエクセルそれぞれで見てもらった。
結果は、「Shift JIS に変換したファイル」のみ文字化けが直っていた。
さらにさらに原因を特定するために、
windowsユーザーの方に上記の4つのファイルの文字コードをVSCodeで確認してもらったところ、
- UTF-8のcsvファイル:
UTF-8 - CotEditorでBOM付きに変換したファイル:
UTF-8←❗️ - 自作したアプリ上でBOM付きに変換したファイル:
UTF-8←❗️ - 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-8のBOM無しになっていた!
結論:BOMは消えることがある
上記の検証から、少なくともMacユーザー→MacユーザーへSlackでファイルを送付し、ダウンロードしてもらうとBOMが消えることが判明しました。
アプリをデプロイし、Windowsユーザーの人にアプリ上からBOM付き変換処理をしたCSVファイルをダウンロードしてもらうと、ちゃんとExcelでの文字化けは直っていました🎊

