CSVファイルの読み込みで文字化けが発生する
PHP初心者です。
現在アンケートフォームを作っているのですが
①アンケート入力
②入力確認フォーム
③回答完了ページ(この時点でアンケート内容をCSVファイルに出力)
④回答内容を確認するためのページ(ここでCSVファイルを読み込み、表示)
という構成にしております。
③の時点で
//配列をcsvファイルに書き込む準備
$title = ['名前','出席番号','メールアドレス','性別','趣味','去年の一番の思い出','今年の抱負'];
$vararray = [$myid,$number,$mail,$gender,$hobby,$lastyear,$thisyear];
//文字列をUTF-8から変換
mb_convert_variables('SJIS-win', 'UTF-8', $title);
mb_convert_variables('SJIS-win', 'UTF-8', $vararray);
//ファイルへ書き込み実行
$handle = fopen('data/data.csv','a');
flock($handle,LOCK_EX);
fputcsv($handle,$title);
fputcsv($handle,$vararray);
flock($handle,LOCK_UN);
fclose($handle);
というコードを書き、正常にcsvファイルに書き込みがされています。
この時にエンコードをUTF-8からShift_JISに変更したので、④で読み込みをした際に、文字化けしてしまいます。
ブラウザでエンコードをShift_JISに変更したら文字化けは消えましたので、読み込んだ時点でShift_JISのエンコードになっているのはわかったのですが、それをUTF-8に戻す術がわかりません…。
最初はmb_convert_variables('SJIS-win', 'UTF-8', $変数);
で変更すればよいのかと思いましたが状況が変わらず
setlocale(LC_ALL, 'ja_JP.UTF-8');
というものも試してみましたが、こちらでもうまくいきませんでした。
現状は下記のコードですが、うまくいきません。
<?php
setlocale(LC_ALL, 'ja_JP.UTF-8');
$fp = fopen("data/data.csv", "r"); //ファイルを開く
flock($fp, LOCK_SH); //ファイルロック
while ($array = fgetcsv( $fp )) { //ファイルを読み込む
$num = count($array); //行数カウント
for($i=0;$i<$num;$i++){
echo '<p style="font-size:12px;">'.$array[$i].'</p>'; //とりあえず出力
}
}
flock($fp, LOCK_UN); //ロック解除
fclose($fp); //ファイルを閉じる
?>
詳しい方おりましたら、ご指摘いただければと思います。。
宜しくお願い致します。