Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包含希伯来文内容的PHPExcel reading.csv文件工作不正常_Php_Csv_Yii2_Phpexcel - Fatal编程技术网

包含希伯来文内容的PHPExcel reading.csv文件工作不正常

包含希伯来文内容的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)

我试图使用PHPExcel库读取一个.csv文件,但它给了我问号,而不是希伯来文文本

只有当我尝试上载从Windows操作系统创建的.csv文件时,问题才会出现。我在MacOS和Linux上也做了同样的尝试,数据似乎很好。如何从windows解决编码问题

    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