「UTF-8で保存したのに文字化けする」「BOM付きなら開ける」。
そんなときに出てくるのが UTF-8 BOM だ。
BOMは何か
BOMはファイル先頭に置かれる短いバイト列で、文字コード判定の手掛かりとして使われることがある。
UTF-8ではBOMが必須ではない。一方、アプリによってはBOMがあるほうがUTF-8と認識しやすいことがある。
BOMあり・なしのどちらが正解か
一律の正解はない。重要なのは、読み込む側が何を期待しているかだ。
- インポート先がUTF-8 BOMなしを要求
- 表計算ソフトがBOM付きのほうを安定して認識
- 古い処理系がBOMを文字として扱ってしまう
といった差がある。
最初の列名だけ変になる場合
BOMを処理しない実装では、最初のヘッダー名に見えない文字が混ざり、email のはずが一致しないことがある。
ヘッダー比較で最初の列だけ認識されない場合は、BOM処理も確認する。
安全な手順
- 元CSVを保存
- インポート先の文字コード仕様を確認
- BOMあり・なしを確認
- 作業用コピーだけ変換
- 最初のヘッダー名と日本語を再確認
- 少量テストインポート
文字化け全般はUTF-8とShift_JISの確認方法も参照できる。
BOMは「付ければ直る魔法」ではない。送り先の仕様に合わせるための確認項目の一つとして扱うのが安全だ。