

PHP初心者です。

現在アンケートフォームを作っているのですが

①アンケート入力  
②入力確認フォーム  
③回答完了ページ（この時点でアンケート内容をCSVファイルに出力）  
④回答内容を確認するためのページ（ここでCSVファイルを読み込み、表示）

という構成にしております。

③の時点で

[code]

    //配列を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);
    
[/code]

というコードを書き、正常に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');` というものも試してみましたが、こちらでもうまくいきませんでした。

現状は下記のコードですが、うまくいきません。

[code]

    <?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);                              //ファイルを閉じる 
    ?>
    
[/code]

詳しい方おりましたら、ご指摘いただければと思います。。

宜しくお願い致します。


CC BY-SA 3.0
2016-01-04T10:28:12.127
20588
2016-01-04T17:41:19.530
2016-01-04T17:41:19.530
76
9542
question
php csv array
CSVファイルの読み込みで文字化けが発生する


<http://php.net/manual/ja/function.mb-convert-variables.php> によると、

[code]

    string mb_convert_variables ( string $to_encoding , mixed $from_encoding , mixed &$vars [, mixed &$... ] )
    
[/code]

なので、`mb_convert_variables('UTF-8', 'SJIS-win', $変数);` ではないでしょうか


CC BY-SA 3.0
2016-01-04T16:09:54.607
20606
2016-01-04T16:09:54.607
5778
20588
answer