普通にCSVを作ろうとすると、大体Shift-JISで出力してしまうのだけど、CSV中に複数言語入っているともちろん文字化ける。ならばとUTF-8で出力するとExcel先生的にぐっちゃになる。さてどうしたものかと思案したのだけど、要するにBOM付きUTF-8にしてしまえば文字化けずに開けるようになるらしい。
なんかすごくアレな対応なのだけど、まぁ、出力できるならそれに越したことはないわけで。PHPで書くとこんな感じ。
<?php
// はじめにBOMを出力する
echo pack('C*',0xEF,0xBB,0xBF);
// なんやかんやとCSVを出力
// 文字コードはUTF-8にしておくこと
echo $csv;
?>