2016-04-04 14 views
0

Bazı Çince karakter içeren mysql csv veri vermeyi deniyorum, ancak her zaman çöp kodu olur. Ben googled ve başlığa BOM eklemek için öneri bulabilirsiniz.Ama hala çalışmıyor gibi görünüyor, işte benim kodum. lütfen öner.php export mysql Çince karakter için csv, ancak karakter çöp kodu olur

<?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); 

} 
} 

?> 

İşte benim Hex görünümüm, Çince karakterin sadece bir bayt olduğu görülüyor, bir bayt eksik. PHP, karakteri 4 baytta çıkarmıyor gibi görünüyor. The hex dump of output file by PHP

cevap

0

bu deneyin:

$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); 
} 

hat fprintf($df, chr(0xEF).chr(0xBB).chr(0xBF)); doğru kodlama için dosya başlığını yazar.