league/csv 使用 ISO-8859-1 编码读取文件时出现问题

league/csv problem reading file with ISO-8859-1 encoding

$data = file_get_contents($path);
$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data, 'UTF-8, ISO-8859-1', true));

$csv = Reader::createFromString($data);
$csv->setDelimiter(';');
$csv->setHeaderOffset(0);

$test = $csv->getContent();

return (new Statement)->process($csv); 

当我调试并查看 $test 时,所有字符都正确显示(没有 l×nn 等)。

当我遍历从此行返回的 TabularDataReader object 时:

return (new Statement)->process($csv); 

headers 显示不正确,例如 "Bil lønn"(应该是 "Bil lønn")。

我是否也必须在语句 object 上设置编码?我查看了 class,但找不到任何与编码相关的函数。

我在 league/csv 和 ISO-8859-1 编码方面遇到了同样的问题。试试这个解决方法:

$data = file_get_contents($path);

if (!mb_check_encoding($data, 'UTF-8')) {
    $data = mb_convert_encoding($data, 'UTF-8');
}

$csv = Reader::createFromString($data);
$csv->setDelimiter(';');
$csv->setHeaderOffset(0);

$test = $csv->getContent();

return (new Statement)->process($csv);