您的位置:首页 > 编程语言 > PHP开发

PHPExcel系列之一:编码不统一,乱码问题

2016-12-26 08:15 239 查看
在用PHP对Excel进行读取时,发现存在这样的问题,在PHP中设置编码方式:header('Content-Type:text/html; charset=gb2312');通过该设置,可以保证显示在浏览器中的中文正确显示。

但在利用PHPExcel进行Excel数据读取后,发现显示出的数据乱码:

include("PHPExcel/Classes/PHPExcel.php");
include("PHPExcel/Classes/PHPExcel/IOFactory.php");

//题库所在地址
$filePath = './file/test.xlsx';
//$filePath = './file/测试.xlsx';

//
$objPHPExcel = new PHPExcel();

/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath))
{
$PHPReader = new PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($filePath))
{
echo 'no Excel';
return ;
}
}

$objPHPExcel = $PHPReader->load($filePath);

echo '<hr />';
//获取具体的sheet有2种方式:getSheet或者getSheetByName/getActiveSheet。
$sheetData = $objPHPExcel->getSheetByName("2004")->toArray(null,true,true,true);
$values=array_values($sheetData);
print_r ($trans);
通过调整编码方式发现,PHPExcel数据只有在utf-8格式下才能正常显示。这样就存在一个问题,本身页面的编码方式只有在gb2312才能正常显示,而从Excel中读取过来的数据只有在utf-8的情况下才能读取出来,两者存在明显的冲突。

为了不出现乱码问题,对Excel读取过来的数据进行编码方式转换,即加入以下语句:

$trans=mb_convert_encoding(var_export($values,true),"gb2312","utf-8");

将进行测试后发现,页面不再出现乱码,问题解决!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: