案件で CSV 出力を実装したのでメモ
Excel で UTF-8 の CSV ファイルは開けない
理由
Excelの場合、CSVファイルはShift-JISとして開くこのため、UTF-8 の CSV ファイルを Excel で開きたい場合は
- 拡張子を別のものに変えて開く
- 先頭に三バイトのBOMを付与したCSVファイルで開く
FuelPHPでの準備
FuelPHPでCSVファイルを出力する場合、CSVファイル用に拵えた配列をto_csv()に渡してやる必要がある。この手の出力は RestController を使うと楽だが当該案件ではエラーハンドリングなどがあり RestController を使うのは見送った。
以下のようにto_csv()をオーバライドする
class Format extends Fuel\Core\Format {
public function to_csv($data = null){
$csv = parent::to_csv($data);
return mb_convert_encoding($csv, 'SJIS-win', 'UTF-8');
}
}参考引用: FuelPHP で CSV の出力 - Qiita
mb_convert_encodingを挟んでUTF-8からSJIS-winに文字エンコーディングを変換する。
これで Excel で開ける CSV ファイルへ変換する事ができる。