質問: implode(',', $buf) . "¥r¥n"; } // CSVの出力 header ("Content-Type: application/force-download"); header ("Content-Disposition: attachment; filename=" . $down_file); header ("Content-Description: File Transfer"); header ("Content-Length: " . strlen(join("",$csv)) ); foreach ($csv as $mval) { echo mb_convert_encoding($mval, '','UTF-8'); } ?> ``` ### 試したこと foreach ($csv as $mval) { echo mb_convert_encoding($mval, '','UTF-8'); この部分を echo mb_convert_encoding($mval, 'SJIS','UTF-8'); など変更しましたがうまくいきませんでした。 どうぞご教示いただけますでしょうか。。。
回答: mysqlデータベース接続時のエンコーディング指定が漏れているために文字化けにつながっているのかと。 PHPでデータベースに接続するときのまとめ - Qiita > > mysql:dbname=test;host=localhost;charset=utf8mb4 > > > みたいに、接続時のオプションとしてcharset指定する模様です。 それと、mysql_connect()なんて化石みたいなのを使うのはやめてください。 せめてmysql**i**_connect()などmysqli系関数群に移行するか、 引用記事のようにPDO接続にするべきかと。 mysqli系でのサンプル: \[PHP\] mysqli使い方まとめ(MySQL接続~SELECT実行まで) - Qiita PHP: mysqli::set_charset - Manual mysqli_set_charset()でutf8mb4を指定すればよいかと。