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);
$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);