包含希伯来文内容的PHPExcel reading.csv文件工作不正常
我试图使用PHPExcel库读取一个.csv文件,但它给了我问号,而不是希伯来文文本 只有当我尝试上载从Windows操作系统创建的.csv文件时,问题才会出现。我在MacOS和Linux上也做了同样的尝试,数据似乎很好。如何从windows解决编码问题包含希伯来文内容的PHPExcel reading.csv文件工作不正常,php,csv,yii2,phpexcel,Php,Csv,Yii2,Phpexcel,我试图使用PHPExcel库读取一个.csv文件,但它给了我问号,而不是希伯来文文本 只有当我尝试上载从Windows操作系统创建的.csv文件时,问题才会出现。我在MacOS和Linux上也做了同样的尝试,数据似乎很好。如何从windows解决编码问题 public function actionUpload() { $params = $_FILES['uploadFile']; if($params)
public function actionUpload()
{
$params = $_FILES['uploadFile'];
if($params)
{
$data = array();
$model = new UploadForm();
$model->uploadFile = $_FILES['uploadFile'];
$file = UploadedFile::getInstanceByname('uploadFile');
$inputFileName = $model->getpath($file,$data);
// Read your Excel workbook
try
{
$inputFileType = \PHPExcel_IOFactory::identify($inputFileName['link']);
$objReader = \PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName['link']);
}
catch(Exception $e)
{
die('Error loading file "'.pathinfo($inputFileName['link'],PATHINFO_BASENAME).'": '.$e->getMessage());
}
// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$fileData = array();
// Loop through each row of the worksheet in turn
for ($row = 1; $row <= $highestRow; $row++)
{
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL,
TRUE,
FALSE);
array_push($fileData,$rowData[0]);
// Insert row data array into your database of choice here
}
return $fileData;
}
}
公共函数actionUpload()
{
$params=$_文件['uploadFile'];
如果($params)
{
$data=array();
$model=新上传表单();
$model->uploadFile=$\u文件['uploadFile'];
$file=UploadedFile::getInstanceByname('uploadFile');
$inputFileName=$model->getpath($file,$data);
//阅读您的Excel工作簿
尝试
{
$inputFileType=\PHPExcel\u IOFactory::identify($inputFileName['link']);
$objReader=\PHPExcel\u IOFactory::createReader($inputFileType);
$objPHPExcel=$objReader->load($inputFileName['link']);
}
捕获(例外$e)
{
die('Error loading file'.pathinfo($inputFileName['link'],pathinfo_BASENAME)。“:'。$e->getMessage());
}
//获取工作表维度
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();
$highestColumn=$sheet->getHighestColumn();
$fileData=array();
//依次遍历工作表的每一行
对于($row=1;$row RANGETORARRAY('A'.$row'.:'。$HIGHEST COLUMN.$row),
无效的
是的,
假);
数组_push($fileData,$rowData[0]);
//在此处将行数据数组插入所选数据库
}
返回$fileData;
}
}
在上载从Windows创建的.csv文件时,输出数组中出现希伯来文文本的地方有“?”。那么,您在哪里告诉PHPExcel它正在读取的文件的字符集?
$objReader->setinpunecoding();在加载()之前
…否则,PHPExcel假定文件是UTF-8i。我尝试了上述方法,但它不起作用。您设置了什么字符编码?尝试了ISO-8859-1和UTF-8