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


白板的微信
浏览 57回答 1
1回答

婷婷同学_

以下转换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;  }}感谢所有参与的人:)
打开App,查看更多内容
随时随地看视频慕课网APP