热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php导出csv文件bom,php读取csv文件后,uft8bom导致在页面上显示出现问题的解决方法...

php读取csv文件后,uft8bom导致在页面上显示出现问题的解决方法date.csv:IDNAMEEMAIL1小明xm163.com2小东xd

php 读取 csv 文件后, uft8bom 导致在页面上显示出现问题的解决方法

date.csv:

"ID""NAME""EMAIL"

"1""小明""xm@163.com"

"2""小东""xd@sina.com"

"3""小少""shaozi@hotmai.com"

读取这个 csv 文件

代码如下:$handle=fopen('date.csv','r');

while($data=fgetcsv($handle,10000,"/t"))

{

echo"$data[0]"."$data[1]"."$data[2]";

}

?>

读取后在页面上显示时, 成了这样:

"ID" NAME EMAIL

1 小明 xm@163.com

2 小东 xd@sina.com

3 小少 shaozi@hotmai.com

fgetcsv 函数的字段环绕符默认是双引号,

为什么我读取出来时, 其它字段都好好的, 可是 ID 还有双引号包着?

上网查了下, 原来是 utf8 编码的 bom 在 php 下无法识别.

下面是查来的资料:

Unicode 规范中有一个 BOM 的概念 BOMByte Order Mark, 就是字节序标记在

这里

找到一段关于 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 来标记文本文件的编码方式的

另外 unicode 网站的

FAQ-BOM

详细介绍了 BOM 官方的自然权威, 不过是英文的, 看起来比较费劲

UTF-8 编码的文件中, BOM 占三个字节如果用记事本把一个文本文件另存为 UTF-8 编码方式的话, 用 UE 打开这个文件, 切换到十六进制编辑状态就可以看到开头的 FFFE 了这是个标识 UTF-8 编码文件的好办法, 软件通过 BOM 来识别这个文件是否是 UTF-8 编码, 很多软件还要求读入的文件必须带 BOM 可是, 还是有很多软件不能识别 BOM 我在研究 Firefox 的时候就知道, 在 Firefox 早期的版本里, 扩展是不能有 BOM 的, 不过 Firefox 1.5 以后的版本已经开始支持 BOM 了现在又发现, PHP 也不支持 BOM

PHP 在设计时就没有考虑 BOM 的问题, 也就是说他不会忽略 UTF-8 编码的文件开头 BOM 的那三个字符由于必须在转换 ->UTF-8 转 ASCII, 或者在另存为里选择 ASCII 编码如果是 DOS 格式的行尾符, 可以用记事本打开, 点另存为, 选 ASCII 编码如果包含中文字符的话, 可以用 UE 的另存为功能, 选择 UTF-8 无 BOM 即可请参考下面的图片:

ab7653affab982b574eb7acc55df2e04.gif

根据 Bo-Blog 的 wiki 的说明: Editplus 需要先另存为 gb, 再另存为 UTF-8 不过这样做要小心, 所有 GBK 编码中不包含的字符就会都丢了如果有一些非中文的字符在文件里的话还是不要用这种办法了 (从这一个小方面来看, UEUltraEdite-32 确实比 Editplus 好很多, Editplus 太轻量级了)

另外我发现了一个办法, 就是利用 Wordpress 提供的文件编辑器这个办法不受限制, 不需要去下载专门的编辑器, 毕竟大家都在用 Wordpress 嘛先在 ftp 里把要编辑的文件的写入权限打开, 然后进入 Wordpress 后台 -> 管理 -> 文件编辑器, 输入要编辑文件的路径, 点编辑文件在显示出来的编辑界面中, 你是看不到开头的那三个字符的, 不过没关系, 把光标定位在整个文件的第一个字符前, 按一下 Backspace 键 OK 了, 点更新文件吧, 在 ftp 里刷新一下, 可以看到文件小了 3 字节, 大功告成

最后说一下, 这是个大问题, 所有要自己写插件的, 编辑别人的插件自己用的, 需要修改模版的 (这条估计每个人都需要吧), 最好了解一下上面的知识, 免得出现问题时不知所措

来源: https://www.php1.cn/detail/php-e98396104d.html



推荐阅读
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 本文详细介绍了 jQuery 的入门知识与实战应用,首先讲解了如何引入 jQuery 库及入口函数的使用方法,为初学者提供了清晰的操作指南。此外,还深入探讨了 jQuery 在实际项目中的多种应用场景,包括 DOM 操作、事件处理和 AJAX 请求等,帮助读者全面掌握 jQuery 的核心功能与技巧。 ... [详细]
  • 如何在 Node.js 环境中将 CSV 数据转换为标准的 JSON 文件格式? ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 深入解析OSI七层架构与TCP/IP协议体系
    本文详细探讨了OSI七层模型(Open System Interconnection,开放系统互连)及其与TCP/IP协议体系的关系。OSI模型将网络通信过程划分为七个层次,每个层次负责不同的功能,从物理层到应用层逐步实现数据传输和处理。通过对比分析,本文揭示了OSI模型与TCP/IP协议在结构和功能上的异同,为理解现代网络通信提供了全面的视角。 ... [详细]
  • 在一系列的学习与实践后,Jsoup学习笔记系列即将进入尾声。本文详细介绍了如何使用Jsoup实现从Saz文件到Csv格式的数据解析功能。未来,计划将此功能进一步封装,开发成具有用户界面的独立应用程序,以增强其实用性和便捷性。对于希望深入掌握Jsoup技术的开发者,本文提供了宝贵的参考和实践案例。 ... [详细]
  • 如何在LNMP环境中为WordPress博客安装SSL证书:从程序下载到完成配置
    在LNMP环境下为WordPress博客安装SSL证书的详细步骤,从软件下载到最终配置完成。本文将指导您如何在已设置好的VPS上通过WinSCP等工具上传WordPress程序,并顺利完成SSL证书的安装与配置,确保网站的安全性和数据传输的加密。 ... [详细]
  • 在Linux系统中Nginx环境下SSL证书的安装步骤与WordPress CDN的高级配置指南
    在Linux系统中,Nginx环境下安装SSL证书的具体步骤及WordPress CDN的高级配置指南。首先,安装SSL证书需要准备两个关键配置文件,并建议在操作前备份相关服务器配置文件,以确保数据安全。随后,本文将详细介绍如何在Nginx中正确配置SSL证书,以及如何优化WordPress的CDN设置,提升网站性能和安全性。 ... [详细]
  • 1.CSS3圆角border-radius属性一个最多可指定四个border-*-radius属性的复合属性,这个属性允许你为元素添加圆角边框!语法:border-radius:1 ... [详细]
author-avatar
风流小姑-娘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有