PHP编码Excel的.csv中的元音变音符



我正在编写一个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);

以下到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;
}
}

感谢所有插话的人:(

最新更新