我正在尝试将数据从mysql导出到包含一些中文字符的csv,但它总是变成垃圾代码。我用谷歌搜索并找到在标题处添加BOM的建议。但它似乎仍然不起作用,这是我的代码。请建议。
<?php
if(isset($_POST["Export"]))
{
mysql_connect('localhost','test','abc');
mysql_select_db('test');
header('Content-Encoding: UTF-8');
header('Content-Type: text/csv; charset=utf-8' );
header(sprintf( 'Content-Disposition: attachment; filename=my-csv-%s.csv', date( 'dmY-His' ) ) );
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
$data = fopen( 'php://output', 'w' );
//This line is important:
fputs( $data, "\xEF\xBB\xBF");
fputcsv($data,array('student_id','student_chiName','student_engName',' student_title','student_gender','news_receive'));
//Retrieve the data from database
$rows = mysql_query('SELECT * FROM student');
//Loop through the data to store them inside CSV
while($row = mysql_fetch_assoc($rows)){
fputcsv($data, $row);
}
}
?>
答案 0 :(得分:0)
试试这个:
$data = fopen($filepath, 'w');
$rows = mysql_query('SELECT * FROM student');
fprintf($df, chr(0xEF).chr(0xBB).chr(0xBF));
while($row = mysql_fetch_assoc($rows)){
fputcsv($data, $row);
}
行fprintf($df, chr(0xEF).chr(0xBB).chr(0xBF));
写入文件头以进行正确编码。