• ベストアンサー

DBからのCSVファイルダウンロード

MySQLに溜めたデータをCSV形式でダウンロードしたいと思っていますが、ダウンロードしたファイルが文字化けして困っています。 PHP、DBともにEUCで作成しているのですが、プログラムの中に文字コードに関する記述が必要になるとは思うのですが、何を追加すればいいのか教えていただけますでしょうか?

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.1

こんにちは。 カンタンな方法として、 $y = mb_convert_encoding($x,"SJIS","EUC-JP"); と やって、$x にDBから読んできた値を入れ、$y を得ます。 で、$y を表示させてみて、文字化けしないような「"SJIS","EUC-JP"」の組み合わせを見つけてください。ちなみに一般型は 変換後の文字列 = mb_convert_encoding(変換前の文字列,変換後の文字コード,変換前の文字コード); です。

関連するQ&A

  • PHP→DB→CSV 「ダウンロードできません」

    DBの内容をPHPを使ってCSVに変換してダウンロードするプログラムを使っています。 プログラム(csv.php)の先頭に header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=output.txt"); header ("Content-Description: File Transfer"); を書いているのですが、いざダウンロードをする画面になるとoutput.csvでなくcsv.phpをダウンロードすることになってしまいダウンロードができません。 表示だけならばっちりでているのですが、、、ファイルタイプがHTMLとなっているのも意味不明です。 だれか助けてください(><

    • ベストアンサー
    • PHP
  • CSVでダウンロードする

    環境:WinXP,PHP5,MySQL5,Apache2 特定のファイルそのもの(例:ABC.txt)をダウンロードするPHPは書けるのですが、あるファイル(MySQL)があり、これを抽出条件をかけて並び順を変え、ファイル形式をCSVでダウンロードする部分ができません。 1.SQL文を発行する--この時CSV形式になるのか、わかりません。 2.ファイルを作成する(サーバに保存) 3.そのファイルをダウンロードする という手順になると思います。 参考になるサイト、書籍、アドバイスいただけると幸いです。 また、サイトで公開するので上記2の「2.ファイルを作成する」部分が多数の方が一定時間内にダウンロードした場合も心配です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • CSVファイルのデータが、データベース上で文字化け

    CSVファイルのデータが、データベース上で文字化けする現象を解決したい! CSVファイルは、任意の場所にFTPソフトを使用してアップロードし、プログラム上でCSVを読み込むという手順です。 ■開発関係情報 phpは使用しておらず開発はperlを使用 開発プログラムの文字コードはEUC-JPで、出力されるHTMLの文字コードはShift-JISです。 (1)hetemlに設置した場合は正常に動作しました。 予め作成されていたデータベースのエクスポートファイルをインポートしてテーブルを作成しましたがインポート時のファイルの文字セットは「utf8」で、コーディングへの変換は「non」で実行しています。 MySQLバージョン:5.0.82 MySQLの文字セット:UTF-8 Unicode(utf8) MySQLの接続照合順序:utf8_unocode_ci phpMyAdmin - 2.11.11.3 MySQL クライアントのバージョン: 4.0.25 (2)無料のレンタルサーバー(国外)に設置すると文字化けします。 (1)と同じ手順で行うと、データベース上でCSVデータの日本語が文字化けします。 MySQLバージョン:5.1.65-cll MySQLの文字セット:UTF-8 Unicode(utf8) MySQLの接続照合順序:utf8_unocode_ci phpMyAdmin - 3.4.11.1 MySQL クライアントのバージョン: 4.1.22 そこでCSVをFTPでアップせずデータベースでインポート(ファイルの文字セット:utf-8、エンコーディングの変換なし)しようとすると「CSV入力のカラム数が不正です」というエラーになります。 色々と調べていると、文字コードをすべてEUCに統一すると文字化け解決と書いてあったので、CSVファイル・MySQLの接続照合順序・インポートするときの文字セットなどの思い当るところ全てをEUCに指定して、エンコーディングへの変換を「EUC」に「全角カナへ変換する」にチェックを入れて実行してみても、やはり「CSV入力のカラム数が不正です」エラーになります。 この時、フォーマット項目で「LOAD DATA文を使用したCSVの読み込み」を選択し、特有のオプションで「カラムの終端記号」を「,」「カラム囲み記号」を「"」に設定して、CSVファイルでは区切りを「,」と「","」の2パターンで試しても同じエラーでした。 また、気になる点としては、MySQLの文字セットはUTF-8のままでどうやって変更するのかがわかりません。 開発にphpは使用していなくても、phpmyadminを使用しているということはphp.iniの設定が必要ですよね? php.iniの設定は、権限が与えられていなければサーバー側で設定を行ってもらう必要があるのでしょうか?(初歩的な事ですみません) 試行錯誤していますが、解決法が分からず困っています。 どなたかご教示いただけませんでしょうか。 何卒よろしくお願い致します。

  • DBからCSV出力する方法

    DBのデータをCSVファイルでダウンロードする機能を作成しています。 DBのデータをカンマ区切りで変数に格納するところまではできましたが、CSVでのダウンロード(ダウンロードダイアログ)ができません。 以下が実際の記述ですが、間違いを指摘いただけないでしょうか。 ※$result 出力するデータ全てが,区切りで格納されている <PHPファイル内> $size = strlen($result); $filename = csv_dl.csv; //csvdll header("Content-Disposition: inline; filename=\"".basename($filename)."\""); header("Content-Length: ".$size); header("Content-Type: application/octet-stream"); 以上です。 リターンが遅くなるかもしれませんが、どうかよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • CSVダウンロードができません。

    PHP4とMySQL4.1.21で開発しています。 CSVダウンロードをしようと下記のように記述しましたが動きません。どこがおかしいでしょうか?教えてください。 print mb_convert_encoding("メールアドレス\n","SJIS","EUC-JP"); while ($Row = mysql_fetch_array($result, MYSQL_ASSOC)) { $mail=mb_convert_encoding($Row['mail'],"SJIS","EUC-JP"); print $vmem_mail."\"\n"; }

    • 締切済み
    • PHP
  • CSV出力時の”0”表示(電話番号等)について

    PHPでDBのカラムから配列で取得したデータをcsv出力しダウンロードさせるプログラムを作成しています。 csv形式でのダウンロードは完了していますが、電話番号などの頭に’0’が入る文字列は’0’が消えてしまいます。(例:03→3) ダウンロードしたcsvをエディタで開くと’0’は表示されます。 この場合、どのような制御をPHP側ですればいいいでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • CSVファイルのダウンロード

    <環境> PHP4.3.2 Windows2000 PostgreSQL RedHat Linux <求めていること> DBのデータをCSVファイルに書き出し、 ダウンロードボタン押下で ダイアログがアップしファイル保存ディレクトリ選択、保存。 <現在のソース> サーバーにtest.csvファイル作成後、 現在HTMLでダウンロードボタン押下でdownload.phpを呼び出し <input type=button value="ダウンロード" onClick="location.href='download.php'"> ---------------- download.php ------------------- <?php // 1.ディレクトリ指定 //$filename="/test/test.csv"; // 2.ディレクトリ指定なし $filename = "test.csv"; header("Content-disposition: attachment; filename=$filename"); header("Content-type: application/octet-stream"); ?> ---------------- download.php ------------------- 現在、 1番のディレクトリ指定だと downloadというファイルがダウンロードされるダイアログがアップし ダウンロードされます。 2番のディレクトリ指定なしだと もちろん空のtest.csvファイルがダウンロードされます。 実現したいのは/test/test.csvのファイルをダウンロードすることです。 色々なサイトで探してみて試しているのですが 初心者なもので、行き詰まってしまいました。 申し訳ありませんが ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • データ型textのcsvインポート

    環境 Apache2 PostgreSQL8 PHP5 EUC-JP PostgreSQLのデータ型textにて入力したデータをcsvダウンロードし、 再度csvをアップロードし取り込むプログラムを作成しております。 データ型textなので改行コードや長文のデータがあります。 csvファイルにてダウンロードする際、 \nを↑、\rをブランクに変換してcsvファイルを作成し、 csvファイルをアップロードする際は、 mb_convert_encodingにてcsvファイルのsjisをeuc-jpに変換をしております。 ほとんどのデータが問題なくアップロードできるのですが、 syntax error at or near "," というエラーが出る場合があります。 これはどのような場合に出るのでしょうか? 抽象的な質問かもしれませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • CSVファイルをEUCで保存したい

    CSVでファイルを作成しました。 そのファイルを文字コードをEUCで新たに保存することはできるのでしょうか。 宜しくお願い致します。

  • csv形式のファイルをダウンロードさせたいのですが。

    はじめまして。MySQLとJSPを用いて、サイトページを構築する勉強をしているものです。まだ初心者ですが、行き詰まったので、是非教えていただきたいです。 現在、データベースに登録されているテーブルをcsv形式のファイルとしてダウンロードできるような仕組を考えているのですが、いい方法が思い付きません。そのページでは毎回選択されたテーブルを表示させているのですが、そこにそのテーブルのcsvファイルをダウンロードできるようにしたいのです。 select * into outfile ~を使用して、csv形式を作成したものをHTMLタグを使用してダウンロードするといった方法では何が足りないでしょうか?? ちなみにこれでは、select * into outfileで一度指定したファイルを作成してしまえば、既に存在するファイルとして新たに書き込めなくなるんではないかと既に困っています。 是非、教えていただきたいと思っています。よろしくお願いします。

    • ベストアンサー
    • MySQL

専門家に質問してみよう