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は半角英数文字はそのまま出ますが、
日本語(全角)が、?に化けます。(下記の参照してください)
24 2 1 444 4444 2008/7/3 15 ? 1E+18 ??? ????? ??????
25 2 1 444 kojiide 2008/7/3 30 ? 1E+18 ??? ????? ??????
26 2 1 444 kojiide 2008/7/3 30 ? 1E+18 ??? ????? ??????
---
print(mb_convert_encoding($str,"SJIS","EUC-JP").",");
でSJISになっていると思うのですが、どなたかアドバイスいただけると幸いです。