在作一個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);