お疲れ様です。
laravel5で連想配列にした中身を全てCSVファイルに出力したいのですが、以下のように文字化けしてしまいます。
ファイルを開いていったんヘッダーを書き込んでから閉じて、またファイルを開いて今度は中身を書き込むというやり方を試しても同じ結果になりました。
文字化けと重複して表示されているようなのですが、期待値のように表示させるにはどのようにしたらよろしいでしょうか。
よろしくお願い致します。
現状のCSVの出力結果
名前 年齢 仕事
tamura 25 エンジニア
???O ?N?? ?d??
tamura 25 ?G???W?j?A
suzuki 23 介護士
???O ?N?? ?d??
tamura 25 ?G???W?j?A
suzuki 23 ???m
maki 29 レストラン
CSVとして出力させたい期待値
名前 年齢 仕事
tamura 25 エンジニア
suzuki 23 介護士
maki 29 レストラン
lang
1 2class StudyController extends Controller 3{ 4 public function index() 5 { 6 $users[] = array('name'=>'tamura', 'age'=>'25', 'job'=>'エンジニア'); 7 $users[] = array('name'=>'suzuki', 'age'=>'23', 'job'=>'介護士'); 8 $users[] = array('name'=>'maki', 'age'=>'29', 'job'=>'レストラン'); 9 10 $file = fopen('C:\xampp\htdocs\laravel\app\common\sample.csv', 'a'); 11 $csv='名前, 年齢, 仕事'; 12 $csv.="\n"; 13 foreach($users as $user){ 14 //echo $user['name'] . 'さんは' . $user['age'] . "歳です。" . $user['job'] . "をしています。\n"; 15 16 $csv.= $user['name']; 17 $csv .= ','; 18 $csv.= $user['age']; 19 $csv .= ','; 20 $csv.= $user['job']; 21 22 $csv.="\n"; 23 24 25 $csv = mb_convert_encoding($csv, 'SJIS', 'UTF-8'); 26 27 fputs($file, $csv); 28 } 29 fclose($file); 30 31}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/21 13:46