我正在编写一个 PHP 脚本,该脚本根据一些数据创建 .csv 文件。不幸的是,在 Excel 中变音符号无法正确显示:Löl变成L√∂l(这只是在 Excel 中,在 Apple 的 Numbers、Atom 和 Textedit 中一切看起来都很好)。我已经尝试了数百个函数来尝试获得正确的编码(请参阅下面的注释函数)。有人可以告诉我我做错了什么吗?$rows = json_decode('[["Löl"]]');foreach($rows as $key_row => $row) { foreach($row as $key_cell => $cell) { // $rows[$key_row][$key_cell] = utf8_decode($cell); // $rows[$key_row][$key_cell] = iconv('UTF-8', 'Windows-1252', $cell); // $rows[$key_row][$key_cell] = mb_convert_encoding($cell, 'UTF-16LE', 'UTF-8'); // iconv('UTF-8', 'Windows-1252', $rows[$key_row][$key_cell]); // mb_convert_encoding($rows[$key_row][$key_cell], 'UTF-16LE', 'UTF-8'); }}$temp = fopen('php://memory', 'w');foreach($rows as $row) { fputcsv($temp, $row, ';'); }fseek($temp, 0);header('Content-Type: application/csv');header('Content-Disposition: attachment; filename="test.csv";');fpassthru($temp);
1 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
以下转换UTF-8 BOM有效:
foreach($rows as $key_row => $row) {
foreach($row as $key_cell => $cell) {
$rows[$key_row][$key_cell] = chr(239) . chr(187) . chr(191) . $cell;
}
}
感谢所有参与的人:)
- 1 回答
- 0 关注
- 80 浏览
添加回答
举报
0/150
提交
取消