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