No.315
【Excel】UTF-8のCSVファイル
文字コードUTF-8のCSVファイルを開きたい
一昔前はCSVといえばSJISが標準だったけど、最近ではUTF-8のデータもよく見かける。
最近のシステムはUTF-8で稼働するようになっているものが多いので当然な結果だ。
ところがこのUTF-8のCSVファイル、Excelで開けるものと開けないものがある。
最近でもとあるシステムの開発でCSVダウンロード機能があり、そのCSVファイルが開けないというバグレポートが来た。Excelで開くと文字化けしてしまうとのこと。
原因は簡単で、ファイルの先頭にBOM(Byte Order Mark)をつけていないから。
BOMがついている場合、Excelは自動的に文字コードをUTF-8として認識してくれる仕様になっている。ダウンロード処理に一手間加えてExcel対応CSVファイルを作成しよう。
PHPでBOMをつける
下記のバイナリデータをつけてやればOK。
pack('C*',0xEF,0xBB,0xBF)
処理に応じてecho
するなりfput
するなりしよう。
テキストエディタでBOMをつける
Windows標準のテキストエディタは保存時にUTF-8のBOMを自動で追加する。これを利用すればExcelでCSVを開けるようになる。
その他のテキストエディタでも保存時にBOMをつけることができるはず。