CSV形式のファイルをダウンロードすると文字化けします。 - PHPプロ!Q&A掲示板
MySQLのデータをCSV形式でダウンロードする仕組みを作成しました。
windows上でメモ帳を使って開くと、日本語の部分が文字化けします。
エディタを使ってEUCの漢字コードで開くと正しく表示されます。
そこで、文字を出力する部分に以下の処理をしてみました。
- define("FILENAME","data.csv");
- define("CRLF","\r\n");
- header("Content-disposition: attachment; "."filename=".FILENAME);
- header("content-type: text/x-csv");
- $db = DB::connect($dsn);
- if (DB::isError($db)) {
- die ($db->getMessage());
- }
- $sql = "select * from meisai where ID='".$cnt."'";
- $res = $db->query($sql);
- if (DB::isError($res)) {
- die("SQL実行失敗{$db->getMessage()}");
- }
- while($product = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
- $string = "1".",".$product['shohinnm'].",".$product['katanm'].","."台".",".$product['amount'].",".$product['tanka'].",".$product['tanka']*$product['amount'];
- echo mb_convert_encoding($string,"SJIS","EUC-JP").CRLF;
- }
一番下の行にあたるのですが、mb_convert_encodingを使ってEUC-JPからSJISに変換しようと試みましたが、文字化けします。EUC-JPでなくUTF-8にしてもやはり文字化けします。
環境は
サーバー : linux Enterprise 4
クライアント:windows2000
データベース:MySQL 5
ご教授お願い致します。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


再帰関数は最初の内は混乱しますが、非常に上手く使える場面もいずれ出てきます。これを機会に学んでいけるといいですね。