我试图让我的客户在 Excel 中查看一些 MySQL 数据。我使用了 PHP 的 fputcsv() 函数,例如:
public function generate() {
setlocale(LC_ALL, 'ko_KR.UTF8');
$this->filename = date("YmdHis");
$create = $this->directory."Report".$this->filename.".csv";
$f = fopen("$create","w") or die("can't open file");
fwrite($f, "\xEF\xBB\xBF");
$i = 1;
$length = count($this->inputarray[0]);
fwrite($f, $this->headers."\n");
// print column titles
foreach($this->inputarray[0] as $key=>$value) {
$delimiter = ($i == $length) ? "\n\n" : ",";
fwrite($f, $key.$delimiter);
$i++;
}
// print actual rows
foreach($this->inputarray as $row) {
fputcsv($f, $row);
}
fclose($f);
}
我的客户是韩国人,MySQL 数据库的很大一部分包含 utf8_unicode_ci 中的值。通过使用上述函数,我成功生成了一个包含正确编码数据的 CSV 文件,该文件可以在我的机器上的 Excel 中正常打开(英文 Win7),但是当我在客户端计算机上的 Excel 中打开文件(韩文 Win7)时,字符又被打破了。我尝试将标题 (\xEF\xBB\xBF) 取出,并注释掉 setlocale,但无济于事。
你能帮我解决这个问题吗?