dポイントプレゼントキャンペーン実施中!

環境: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になっていると思うのですが、どなたかアドバイスいただけると幸いです。

A 回答 (1件)

MySQLから取得したデータは本当にEUC-JPですか?


DB接続後、
mysql_query("SET NAMES eucjpms",$db);
としてからSELECT文を実行してみてください。

この回答への補足

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/17 17:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!