使用 ISO-8859-1 编码读取文件的 league/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 对象时:


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

标题显示不正确,例如“Bil lønn”(应为“Bil lønn”)。


我是否也必须在 Statement 对象上设置编码?我查看了类,但找不到任何与编码相关的函数


鸿蒙传说
浏览 161回答 1
1回答

富国沪深

我在 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); 
打开App,查看更多内容
随时随地看视频慕课网APP