1. 程式人生 > >phpexcel 讀取中文gbk資料的csv在linux伺服器下亂碼的解決方法.

phpexcel 讀取中文gbk資料的csv在linux伺服器下亂碼的解決方法.

在做一個phpexcel匯入csv資料時,出現詭異現象, 本地windows下除錯順暢, 無亂碼, 釋出到linux伺服器後出現亂碼了. 
各種排查, 初步以為是iconv編碼轉換的問題, 各種編碼嘗試, gbk, gb2312, utf8, asii等都不行. 最後看到了其使用的
fgetcsv函式. php手冊中有這麼一句備註:
Note: 該函式對區域設定是敏感的。比如說 LANG 設為 en_US.UTF-8 的話,單位元組編碼的檔案就會出現讀取錯誤。 
一看伺服器phpinfo的LANG, 剛好就是en_US.UTF-8 . 我次奧. 頓悟了.
解決方法, 程式里加 setlocale(LC_ALL, 'zh_CN');


setlocale(LC_ALL, 'zh_CN');
$objExcelReader = PHPExcel_IOFactory::createReader('CSV');
$objExcelReader->setInputEncoding('GBK');
$objExcelReader->setDelimiter(',');
$objPHPExcel = $objExcelReader->load($path);