【问题标题】:PHP outputting CSV filesPHP 输出 CSV 文件
【发布时间】:2013-12-28 16:08:00
【问题描述】:

我有一个 PHP 文件,它同时生成 CSV 文件(下载)和 HTML 文件。
当我尝试使用 BOM 将文件编码为 UTF-8 时,CSV 文件将呈现为 UTF-8,但 HTML 文件将留下 2 行空格。
当我尝试在没有 BOM 的情况下将文件编码为 UTF-8 时,CSV 文件将不会呈现为 UTF-8,这会导致无意义的代码。 我已尝试添加语句:

echo "\xEF\xBB\xBF";

仍然无法正确读取文件。 附言我没有使用任何功能:fopen,readfile,...。 以下是 CSV 文件的标题:

header("Content-type: application/octet-stream");
header("Content-encoding: UTF-8");
header("Content-dispositon: attachment; filename=name.csv");

谁能告诉我如何解决这两个问题?我只能解决其中一个。

【问题讨论】:

标签: php csv encoding utf-8


【解决方案1】:

试试,不用 BOM:

header("Content-type: application/octet-stream; charset=utf-8");
header("Content-dispositon: attachment; filename=name.csv");

并检查数据是否真的是用UTF-8写的,如果你使用的是latin1数据库或ISO/ANSI PHP脚本,使用utf8_encode转换echo/print数据之前的内容。

【讨论】:

  • 也有数据库?尝试对值进行 utf8_encode 双重检查,有时与数据库的连接会转换值...
  • 不,它与数据库完全无关,因为我只是输出了一个带有内容处理附件的 csv 文件。
  • 顺便说一句,csv文件输出编码为UTF-8而没有BOM,我想知道如何用php将其更改为没有BOM。
  • 要删除文件 BOM,只需 substr($data,3)。有时下载发生在 utf-8 中,但您的应用程序(下载后)没有使用正确的编码读取文件。 OpenOffice 和 Excel 默认读取不同编码的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 2011-02-14
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多