Yii PHP导入CSV失败特殊字符

时间:2017-10-16 16:25:28

标签: php csv utf-8 yii fgetcsv

我的Web应用程序(内置在Yii中)有一个导入功能,它将csv导入我们的数据库。整个函数本身非常复杂,将信息分成多个等等。

然而,我的导入不包括外国字符,尝试转换值但不能导入任何东西,它们只是通过并且“?”或'_'。

以下代码是我的控制器的一部分,用于处理导入操作。

值得注意的是,我的网络应用程序界面允许我复制/粘贴并使用这些字符创建新记录,因此服务器本身允许它和数据库一样,只是导致失败。

if($csvFile=CUploadedFile::getInstance($model,'file')) {
          $temp = $csvFile->getTempName();
          $finfo = finfo_open(FILEINFO_MIME_TYPE);
          $type = finfo_file($finfo,$temp);
          $row = 1;
          $import = [];
          $model->hasHeaders = $_POST['Import']['hasHeaders'];
          $accepted_file_types = ['text/csv','text/plain','application/vnd.ms-excel'];
          if(in_array($type,$accepted_file_types)) {
            if(($handle = fopen($temp, 'r')) !== FALSE) {
              while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                $num = count($data);
                $row++;
                $array = [];
                for ($c=0; $c < $num; $c++) {
                    $item = mb_convert_encoding($data[$c], "ISO-8859-1","UTF-8");
                    array_push($array, $item);
                }
                // each line of the CSV becomes an array, each field separated by a comma
                // push the array representing the line to a new array called $import
                array_push($import, $array);
              }
              fclose($handle);
            }
            if($model->hasHeaders) { // slice off first line of array, containing the headers
              array_shift($import);
            }
在for循环中,我尝试使用mb_convert_encoding,iconv,utf8-encode来转换值 - 或者没有任何效果,或者它使它们空白而不是识别字符。

更多背景我试图导入的测试字符串是'BühnelSvarončík'

任何人都能看到我错过的东西吗?

由于

0 个答案:

没有答案