CSVファイルをデータベースにインサートする場合など、エクセルで作ったCSVファイルがPHPで見ると文字化けしてしまう事が有ります。そんなときは以下のようにしてみて下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php header( "Content-type:text/html;charset=UTF-8" ); //☆ mb_internal_encoding( "UTF-8" ); //☆ mb_language( 'Japanese' ); //☆ $file = 'data.csv' ; if ( file_exists ( $file ) === true){ //ファイルの存在を確認 $data = file_get_contents ( $file ); //展開 $data = mb_convert_encoding( $data , 'UTF-8' , 'sjis-win' ); //エンコードをUTF8へ $temp = tmpfile(); fwrite( $temp , $data ); rewind ( $temp ); setlocale(LC_ALL, 'ja_JP.UTF-8' ); //☆ while (( $row = fgetcsv ( $temp , 0, "," )) !== FALSE) { print_r( $row ); } fclose( $temp ); } ?> |
☆の部分が対処方です。基本的にはヘッダー部分に以下を書き加えると、ほぼ大丈夫だと思います。
1 2 3 | header( "Content-type:text/html;charset=UTF-8" ); //☆ mb_internal_encoding( "UTF-8" ); //☆ mb_language( 'Japanese' ); //☆ |
それでも駄目な場合は以下を書いてみて下さい。
1 | setlocale(LC_ALL, 'ja_JP.UTF-8' ); //☆ |