为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
鸿蒙传说 2023-04-21 17:25:08
$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 对象上设置编码?我查看了类,但找不到任何与编码相关的函数
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

我在 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); 


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信