サーバー側で処理を行い結果を csv 形式でサーバー内に保管し、任意のタイミングでファイルマネージャーを利用して利用者にダウンロードしてもらう仕組みを作成していたが、ダウンロードしたファイルを excel で開くとエラー文字化けが発生していた。単にサーバー内ではutf-8で処理していたためにおきたことなのだが、どう対応するべきなのか判断に困った。なぜ、困ったのかというと、出力した結果はあくまでも csv ファイルであり、 excel で開くために用意しているものではないということだ。結局csvをsjisで出力することになったが、扱いというか、判断に困る内容だ。 $data_sjis=mb_convert_encoding($data, "SJIS-win", "UTF-8"); CSVファイルを書く場合はfputcsvで書けばいいだけなのでいいとして、csvファイルを読み込むときには結構面倒になる。ファイルに出力したことにしてcsv形式を配列に解析してくれる処理は以下のようになる。 $fp = fopen('php://memory', 'rw'); fwrite($fp, $data); rewind($fp); while (($values = fgetcsv($fp, 1000, ',', '"')) !== FALSE) { echo $values[0].'|'.$values[1].'<br />'; } fclose($fp); |
php >