我想创建一个XLS文件,其中包含来自数据库的一些信息,我想从数据库中检索的数据都是希腊字符。我有这个代码,当我执行代码时只有一些符号。任何人都知道我必须改变才能正确地得到希腊字符? 编辑:问题是双方的数据,我从MySQL数据库和标题 这里检索是代码创建XLS文件(希腊字符)
$sql = "SELECT tmima,sex,surname,address,postcode,phone1,phone2 FROM student"; //the query
$result = $db->prepare($sql);
$result->execute();
$column = $result->columnCount();
$header = "";
$head = array("Τμήμα","Φ","Επίθετο","Όνομα","Μητρώο"); //headings of the XLS
for($i = 0; $i < $column;$i++){
$header .= $head[$i]."\t";
}
$data = "";
while($row = $result->fetch(PDO::FETCH_ASSOC)/*mysql_fetch_row($rec)*/){
$line = '';
foreach($row as $value){
if((!isset($value)) || ($value == " ")){
$value = "\t";
}else{
$value = str_replace('"' , '""' , $value);
$value = '"' . $value . '"' . "\t";
}//end of if-else
$line .= $value;
}//end of foreach
$data .= trim($line) . "\n";
}//end of while($row = mysql_fetch_row($rec))
$data = str_replace("\r" , "" , $data);
if ($data == ""){
$data = "\n No Record Found!\n";
}
header('Content-Description: File Transfer');
header('Content-Type: application/ms-excel; charset=utf8');
header("Content-Disposition: attachment; filename=Student_data.xls");
//header("Content-Transfer-Encoding: binary ");
header("Expires: 0");
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Pragma: public");
print "$header\n$data";
您并未创建Excel文件,只是一个扩展名为.xls的文件;但它实际上只是一个制表符分隔的值文件....并且您应该真正使用PHP的fputcsv()函数来创建制表符分隔的值文件,而不是自己为其编写破碎的代码。 – 2013-04-04 07:59:43
将字符集设置为utf8 – aleation 2013-04-04 07:59:45
不要使用UTF-8,请将UTF-16与BOM标题一起使用;或者使用其中一个PHP/Excel库创建一个真正的Excel BIFF或OfficeOpenXML文件,而不是 – 2013-04-04 08:01:14