あるデータを処理し、CSVファイルを出力する自作ツールを開発したときの話です。
ExcelでCSVを開いたときの文字化け対策で、SJISを使用してファイルを出力していましたが
最近、BOM付きのUTF-8に変更しました。
エンコードとBOMについて調べた自分なりの理解を簡単にまとめてみました。
encodeとは?
ファイルに書き込まれている文字コードの種類のこと。
自然言語でいう「何語か?」のようなもので、エンコードに基づいて文字データをどのようにバイトデータに変換するかを決定するものです
BOM(Byte Order Mark)とは?
BOMは、ファイルがどのエンコードで書かれているかを表すマーカーのこと。
システム環境によってはエラーの原因になる事もあり、通常BOM無しで保存される事が多いです
Excelにおける選択:SJIS vs BOM付きUTF-8
Excelでcsvファイルを保存する際には、デフォルトでSJISでエンコーディングされます。
SJISは日本語特有のエンコーディングのため、主に日本国内でしか使用されず。
一方、UTF-8は国際標準のUnicodeをベースにしたエンコーディングであるため、
世界的に広く使われており、多言語対応しています。
ただExcelではUTF-8をそのまま読み込むと文字化けするため、BOM付きで保存して上げる必要があります。
どちらを採用するにしても問題が生じる事はあるみたいですが、SJISの方が問題が多そうなため、
BOM付きUTF-8で出力するようにしました。