CSV形式のファイルをダウンロードすると文字化けします。 - PHPプロ!Q&A掲示板

1176

  • 0P

CSV形式のファイルをダウンロードすると文字化けします。

質問日時 / 2008年5月15日 10:25    回答数 / 2件

Questioner:  toichi  このエントリーをはてなブックマークに追加 

キーワード / CSV    ダウンロード    文字化け   

こんにちは。
MySQLのデータをCSV形式でダウンロードする仕組みを作成しました。
windows上でメモ帳を使って開くと、日本語の部分が文字化けします。
エディタを使ってEUCの漢字コードで開くと正しく表示されます。

そこで、文字を出力する部分に以下の処理をしてみました。

  1. define("FILENAME","data.csv");
  2. define("CRLF","\r\n");
  3.  
  4. header("Content-disposition: attachment; "."filename=".FILENAME);
  5. header("content-type: text/x-csv");
  6.  
  7. $db = DB::connect($dsn);
  8. if (DB::isError($db)) {
  9.   die ($db->getMessage());
  10. }
  11. $sql = "select * from meisai where ID='".$cnt."'";
  12. $res = $db->query($sql);
  13. if (DB::isError($res)) {
  14.   die("SQL実行失敗{$db->getMessage()}");
  15. }
  16. while($product = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
  17.   $string = "1".",".$product['shohinnm'].",".$product['katanm'].","."台".",".$product['amount'].",".$product['tanka'].",".$product['tanka']*$product['amount'];
  18.   echo mb_convert_encoding($string,"SJIS","EUC-JP").CRLF;
  19. }

一番下の行にあたるのですが、mb_convert_encodingを使ってEUC-JPからSJISに変換しようと試みましたが、文字化けします。EUC-JPでなくUTF-8にしてもやはり文字化けします。

環境は
サーバー : linux Enterprise 4
クライアント:windows2000
データベース:MySQL 5

ご教授お願い致します。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01mgngmgngコードの最初に >>CODE ini_set('mbstring.http_out
 ┗A01-1toichiできました!! ありがとうございました!

回答一覧

並び替え:

A01 満足
answerermgngmgng [5月17日 01:24]

コードの最初に
  1. ini_set('mbstring.http_output', 'pass');
とかするとどうなりますか?

この意見に回答する

ツリーへ TOPへ

A01-1
replyertoichi [5月19日 09:54] (最終編集:5月19日 10:08)

できました!!
ありがとうございました!

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
array_mergeの再帰処理の動作について
 このエントリーをはてなブックマークに追加 
A
>1個になったとき$leftを返しますが、 >このとき、最終的な$leftはnullになるかと思います。 いいえ、最後は「渡された配列をそのまま」返します。要素が2以上あるときとの違いは(並べ替えずに戻るので...

>>続きを読む

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

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)