我的Microsoft Excel CSV导出存在编码问题。我创建了一个导入方法,该方法读取包含联系人的CSV文件以将其推送到我们的数据库。
这是我的流程
当我从Microsoft Excel save as
创建包含è
等unicode字符的CSV文件时,我生成了CSV文件。
当我通过POSTMAN上传它然后我用fread
,file
或file_get_contents
读取临时文件的内容时,我有一些不好的字符。
当我使用LibreOffice(https://fr.libreoffice.org/)时,一切都很好,我的PHP代码中包含了良好的编码。
我尽可能尝试了许多解决方案,例如mb_convert_encoding
,utf8_encode
,iconv
,但没有任何方法可行。
这是我从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