当前位置: 首页 > 知识库问答 >
问题:

导出到csv与BOM,奇怪的空间开始的文件,使麻烦

张兴旺
2023-03-14

为了让excel正确读取csv文档而不将其转换为ASCII字符,您需要在文件的开头有一个UTF-8 BOM(3字节,十六进制EF BB BF)。

这是我用来导出到csv的函数

    function download_csv_results($results, $name)
    {   
        header('Content-Type: text/csv; charset=utf-8');
        header("Content-Transfer-Encoding: UTF-8");
        header('Content-Disposition: attachment; filename='. $name);
        header('Pragma: no-cache');
        header("Expires: 0");
        $outstream = fopen("php://output", "w");
fwrite($outstream, "\xEF\xBB\xBF");
         fputcsv($outstream, array_keys($results[0]));



        foreach($results as $result)
        {
            fputcsv($outstream, $result);
        }

        fclose($outstream);
    }

问题是当我用十六进制查看它时,我看到了

20 ef bb bf

相对于

ef bb bf 20

我认为20是一个空格,但是什么原因造成了这个空格,以及为什么它出现在文档的开头,这是我无法理解的。

共有1个答案

乐正明辉
2023-03-14

根据这个答案,我发现我在文件的开头有一个空格。”

 类似资料:
  • 我已经被困在导出UTF-8 CSV与Windows Excel上显示乱码文本的汉字好几天了。我使用PHP,已经添加了BOM字节标记,并尝试编码,但没有运气。 它们在记事本、谷歌电子表格甚至Mac数字上都能很好地打开。但不是在客户要求的Excel上。使用记事本打开时,编码显示为UTF-8。如果我手动将其更改为UTF-8并保存,该文件将在Excel上正常打开。 似乎BOM字节标记不会保存在输出中,因为

  • -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • 为什么我得到一个空的输出?当我删除xml中的xmlns部分时,输出是预期的,但是intellisense不再工作了。 仓库xml 仓库xsl

  • 我有一个程序可以读取两个文件(“incompleta.txt”和“completa.txt”),并比较两个文件中是否有相同的名称。其工作原理如下: 它将“completa.txt”中的所有名称存储在ArrayList中 问题是我的“lista.txt”看起来像这样:Image 第二条线完全是混乱和扭曲的。 我的Java代码:

  • 这是最奇怪的错误,我甚至不知道从哪里开始理解错在哪里。 S3一直工作得很好,直到突然有一天(昨天)它奇怪地编码任何上传给奇怪字符的文本文件。每当一个文本文件中有`、`、Ω或任何其他UTF-8可比字符,但没有英文字符时,该文本文件就会被弄乱。我尝试过使用各种客户端以及AWS的web界面上传。上传很顺利,然后我下载文件,它搞砸了。我试着把它下载到我的Mac上,我试着把它下载到带有Linux的覆盆子上。

  • 问题内容: 我试图将使用以下查询找到的结果导出到我的桌面上的CSV中。 这是我第一次使用Elasticsearch和cURL,因此我对如何执行此操作感到困惑。 现在,当我运行此查询时,它将返回戴夫的姓名,姓氏,地址和性别,并且我想在运行查询时将结果放入桌面上的csv中。 我一直在阅读有关如何执行此链接的操作,但是我不确定如何使我的查询执行此操作-(https://docs.python.org/3