我試圖讓我的客戶端在Excel中查看一些MySQL數據。我已經使用PHP的fputcsv()函數,如:帶有UTF-8的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打開該文件時,再次被打破。我嘗試將標題(\ xEF \ xBB \ xBF)取出,並註釋掉setlocale,但無濟於事。
你能幫我弄清楚嗎?
你可以嘗試添加`mb_internal_encoding(「UTF-8」);`在頂部,告訴我會發生什麼? – tawfekov 2011-01-28 02:25:55
查看BOM(字節順序掩碼)。他們使用的是哪個版本的Excel,2003,2007等? – 2011-01-28 04:57:56