こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQL5のデータを、SQL文を使いcsv形式でダウンロードさせると文字化けします

環境:Apache2&PHP5&MySQL5
MySQL5のデータを、SQL文を使いcsv形式でダウンロードさせると文字化けします。
--
<?php header("Content-Type: application/octet-stream"); ?>
<?php header("Content-Disposition: attachment; filename=output.csv"); ?>
<?php
$srv = "localhost"; // サーバー名
$id = "root"; // ユーザーID
$passwd = "******"; // パスワード
$dbn = "sample"; // データベース名
$sql = "SELECT * FROM result"; // SQL文

$db=mysql_connect($srv,$id,$passwd);
mysql_select_db($dbn,$db);
$rs=mysql_query($sql,$db);
for($i=0; $i<mysql_num_fields($rs); $i++){
print(mb_convert_encoding(mysql_field_name($rs,$i),"SJIS","EUC-JP").",");
}
print("\n");
for($j=0 ;$j<mysql_num_rows($rs); $j++) {
for($k=0; $k<mysql_num_fields($rs); $k++) {
$str=mysql_result($rs,$j,$k);
print(mb_convert_encoding($str,"SJIS","EUC-JP").",");
}
print("\n");
}
mysql_close($db);
---ダウンロードしたCSVは半角英数文字はそのまま出ますが、
日本語(全角)が、?に化けます。(下記の参照してください)
242144444442008/7/315?1E+18??????????????
2521444kojiide2008/7/330?1E+18??????????????
2621444kojiide2008/7/330?1E+18??????????????

---
print(mb_convert_encoding($str,"SJIS","EUC-JP").",");
でSJISになっていると思うのですが、どなたかアドバイスいただけると幸いです。

投稿日時 - 2008-09-17 10:41:12

QNo.4335201

すぐに回答ほしいです

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

MySQLから取得したデータは本当にEUC-JPですか?
DB接続後、
mysql_query("SET NAMES eucjpms",$db);
としてからSELECT文を実行してみてください。

投稿日時 - 2008-09-17 14:00:55

補足

status;
で確認したところ、charactersetはすべてsjisでした。
ただ初心者なもので、sjisの場合
print(mb_convert_encoding(mysql_field_name($rs,$i),"SJIS","EUC-JP").",");
print(mb_convert_encoding($str,"SJIS","EUC-JP").",");
の2行だと思うのですが、書き方がわかりません。
あつかましいですが、アドバイスいただけると幸いです。

投稿日時 - 2008-09-17 17:07:05

お礼

ありがとうございました。
>MySQLから取得したデータは本当にEUC-JPですか?
status;
で確認したところ、charactersetはすべてsjisでした。

投稿日時 - 2008-09-17 17:15:41

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問