从Excel导出CSV导出编码问题

时间:2016-12-19 14:18:56

标签: php silex

我的Microsoft Excel CSV导出存在编码问题。我创建了一个导入方法,该方法读取包含联系人的CSV文件以将其推送到我们的数据库。

这是我的流程

  1. 当我从Microsoft Excel save as创建包含è等unicode字符的CSV文件时,我生成了CSV文件。

  2. 当我通过POSTMAN上传它然后我用freadfilefile_get_contents读取临时文件的内容时,我有一些不好的字符。

  3. 当我使用LibreOffice(https://fr.libreoffice.org/)时,一切都很好,我的PHP代码中包含了良好的编码。

    我尽可能尝试了许多解决方案,例如mb_convert_encodingutf8_encodeiconv,但没有任何方法可行。

    这是我从var_dump

    获得的

    Var_dump

    这是我的代码,它将文件的内容转换为数组以迭代线条,以便将一行转换为数组。

    $iterableContacts = Closure::bind(function () use ($filePath) {
        $keys = [
            'email',
            'language',
            'lastname',
            'firstname',
            'organization',
            'job',
            'street',
            'street_complement',
            'zipcode',
            'city',
            'country',
            'note'
        ];
    
        // var_dump(file($filePath));
    
        foreach (file($filePath, FILE_SKIP_EMPTY_LINES|FILE_IGNORE_NEW_LINES) as $key => $line) {
            $line = str_getcsv($line, ';');
    
            if (trim(strtolower($line[0])) == 'email') {
                continue;
            } elseif (count($line) === count($keys) && !empty($line)) {
                yield ($key - 1) => array_combine($keys, array_values($line));
            }
        }
    }, null);
    

    mb_detect_encoding返回ASCII

    任何人都可以帮助我吗?

    Microsoft Excel 2016 build 15.26(160910) PHP 5.6.28-1

0 个答案:

没有答案