PHP生成CSV文件在Excel中乱码是怎么回事?
Admin 2022-10-10 群英技术资讯 709 次浏览
今天小编跟大家讲解下有关“PHP生成CSV文件在Excel中乱码是怎么回事?”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。PHP生成UTF-8编码的CSV文件用Excel打开乱码?
原因:是由于输出的CSV文件中没有BOM。
什么是BOM?
在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
如何在PHP中输出BOM?
在所有内容输出之前
print(chr(0xEF).chr(0xBB).chr(0xBF));
示例代码:
<?php
function writeCsvToFile($file,array $data){
$fp = fopen($file, 'w');
//Windows下使用BOM来标记文本文件的编码方式
fwrite($fp,chr(0xEF).chr(0xBB).chr(0xBF));
foreach ($data as $line) {
fputcsv($fp, $line);
}
fclose($fp);
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这次我们来再给大家介绍一种求最大公约数的方法,感兴趣的朋友可以学习了解一下~
关于设计模式,我们可以理解为是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。PHP设计模式有单例模式、注册模式、策略模式等等,文本主要给大家介绍的策略模式。
这篇文章主要介绍了Laravel框架基于中间件实现禁止未登录用户访问页面功能,结合实例形式分析了Laravel框架中间件生成、注册及使用相关操作技巧,需要的朋友可以参考下
目标 使用 postman 来实现项目的接口自动化测试。 接口开发之后使用 postman 工具来做基础测试,利用 postman 提供的一些功能,能过实现接口的自动化测试。
加密和解密一般用于电子商务,但是一般的网站开发中也会用涉及到到加密和解密,特别是文件处理上。今天为大家讲解一个自定义函数简单的数字加密/解密算法实例。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008