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

PHP 在 Excel 的 .csv 中编码变音符号

PHP 在 Excel 的 .csv 中编码变音符号

PHP
白板的微信 2023-10-15 15:45:19
我正在编写一个 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;

  }

}

感谢所有参与的人:)


查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 53 浏览

添加回答

举报

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