CSVファイルをダウンロードしたら文字化けするとお客様から連絡があり調べたところ、テストサイトではSHIFT_JISでダウンロード出来ていた所が何故かUTF-8でダウンロードされているようになってしまっていました。
UTF-8のファイルをSHIFT_JISで開きなおすと一応文字化けは直るのですが先頭に「・ソ」という表示が知らぬうちに付いていました。
CSVファイルをダウンロードしたら文字化けするとお客様から連絡があり調べたところ、テストサイトではSHIFT_JISでダウンロード出来ていた所が何故かUTF-8でダウンロードされているようになってしまっていました。
UTF-8のファイルをSHIFT_JISで開きなおすと一応文字化けは直るのですが先頭に「・ソ」という表示が知らぬうちに付いていました。
インターネットで調べてみたら原因は・・・
UTF-8で書かれているPHPファイルをメモ帳で編集して保存をすると、先頭にBOM(Byte Order Mark)が負荷されて保存されてしまいます。
このBOMはPHPのechoでheaderを出力する前に出力されてしまうのでCSVにもこのBOMがきっちり先頭に付いてきちゃうという事でした。
CSVにBOMが付いてくるとSHIFT_JISで開かれるはずのCSVファイルがUTF-8で開かれてしまうので今回の現象が起きたというわけです。
というわけで改修作業ですが、BOMが負荷されたPHPファイルを見つけ出して先頭のBOMファイルを取り除いてあげます。
このファイルを上げなおしてあげると、きちんと文字化けせずにCSVのダウンロードできるようになりました。
UTF-8で開発している時はメモ帳で編集するなという教訓が出来ました・・・
今回は以下のサイトを参考にさせていただきました。
Keep It Simple, Stupid!
http://takesita.seesaa.net/article/96553793.html
Sun Limited Mt.
http://www.syuhari.jp/blog/archives/384