首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将BOM添加到PHP输出流

将BOM添加到PHP输出流
EN

Stack Overflow用户
提问于 2018-02-20 17:43:21
回答 1查看 850关注 0票数 0

我想将一些带有井号的数据导出到CSV文件,并添加BOM以正确表示井号。我遇到过这样的情况,当我写到php输出流的时候,php://output的BOM被忽略了,所以在文件中没有这3个字节。有趣的事实是,如果你复制物料清单字符串(如\xef\xbb\xbf\xef\xbb\xbf),前3个字节将被忽略,而在文件中将只有最后3个字节。这是仅用于在输出流中写入的重现。当我尝试在真实文件中编写时,所有的工作都像预期的那样。

编辑:澄清我的问题。也许有人知道为什么它是这样工作的?如果没有诸如重复BOM字符串之类的拐杖,我如何解决问题?

编辑:我使用Symfony 2.8 StreamedResponse。因此,代码的工作方式如下

代码语言:javascript
复制
$f = fopen('php://output', 'r+');
fwrite($f, "\xef\xbb\xbf\xef\xbb\xbf"); // only 3 bytes will exists
// other code. fputcsv(...) .. fflush($f)

和我正在用https://hexed.it/检查的文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-22 00:58:18

这似乎就是UTF-8解码算法在浏览器中的工作原理,请参阅https://stackoverflow.com/a/42717677

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48882116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档