株式会社オークファンの佐藤です。
どういうわけか社内エンジニアのHHKB率が増えてきた、今日このごろです。
CSVのエクスポートで困る
Excel for Macのxlsxシートを「名前をつけて保存」すると出力されるCSVが、なぜかBOMつきUTF-8、改行コードもCRになってしまいます。
他の人は普通にCR+LFで出力できるのになぜ?と思って、エクスポート時の文字コード・改行コードを調べてみたところ、ExcelからのCSV保存方法は二種類あることが判明しました!
保存オプション
この中に「CSV」が二種類あるのにお気づきでしょうか?
ダイアログ|文字コード|改行コード
---|---|---|---
CSV UTF-8(カンマ区切り) (.csv) |UTF-8 (with BOM) |CR
CSV(コンマ区切り) (.csv) |特に指定なし?|CRLF
Excel for Macのバージョンによっては、「UTF-8」の項目がない場合もあるようです。
CSVをExcelを開くと文字化けする問題に対応するために、UTF-8のエクスポートをつけたのでしょう。
「CSV」という文字だけで選ぶと、つい上にあるUTF-8にしてしまいますが、よりにもよってBOMありなので、先頭行を読み込む際にシステムのエラーチェックに引っかかることがあります。
(´-`).。oO(あと、コンマとカンマが並んでいるのが気になりますね……)
文字コードを確認するコマンド
生成されたファイルの形式は、コマンドで確認できます。
# 「CSV UTF-8(カンマ区切り)」 = BOMを入れるため、間違いなくUTF-8として解釈
$ find bom.csv | xargs file
./bom.csv: UTF-8 Unicode (with BOM) text, with no line terminators
# 「CSV(コンマ区切り)」 = BOMを入れないため、内容で文字コード解釈される
# ASCII文字しか入っていない場合
$ find bills.csv | xargs file
./bills.csv: ASCII text, with CRLF line terminators
# ASCII文字以外が入っている場合
$ find japanese.csv | xargs file
./japanese.csv: Non-ISO extended-ASCII text, with no line terminators
Excelから出力するCSVを使うときには、気にしておくといいと思います。
まとめ
(´-`).。oO(手順書に記載する際は気をつけてください……)