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 即可请参考下面的图片:

根据 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 导出csv文件bom,php 读取 csv 文件后, uft8bom 导致在页面上显示出现问题的解决方法...相关推荐

  1. csv乱码 ftp_php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法

    date.csv:"ID" "NAME" "EMAIL" "1" "小明" "xm@163 ...

  2. 将数据写入json文件,并且读取json文件中的数据

    目录 一.将数据生成json文件 二.读取json文件中的数据 三.方法测试 四.其他附件 1.User实体类 2.import 一.将数据生成json文件 方法 /*** 生成.json格式文件*/ ...

  3. SQL Server:偏移量为 0x0000000009c000 的位置执行 读取 期间,操作系统已经向 SQL Server 返回了错误 21的解决方法

    SQL Server:偏移量为 0x0000000009c000 的位置执行 读取 期间,操作系统已经向 SQL Server 返回了错误 21的解决方法 问题描述: 严重: Servlet.serv ...

  4. Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法

    Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法 Eclipse 工具中的操作 流程图片生成的两种方式: 使用 activiti-designer 设计流程图 ...

  5. 暗黑地牢dlc文件夹或mods文件夹中某个mod在初始界面开新档不显示/不加载的解决办法

    暗黑地牢 Darkest Dungeon dlc文件夹或mods文件夹中某个mod在初始界面开新档不显示/不加载的解决办法 (记录博文) 相关提示 检查mod完整性(参考正确的mod文件结构进行判断) ...

  6. Win10文件夹中图片不显示预览图解决方法

    Win10文件夹中图片不显示预览图解决方法分享.如果我们在文件夹里面有很多的图片文件,可以通过预览图来快速的找到自己需要的图片.但是有用户却发现电脑文件夹里面图片不会显示缩略图,今天我们一起来看看如何 ...

  7. IntelliJ IDEA 2021.2版文件显示图标有误的解决方法

    IntelliJ IDEA 2021.2版文件显示图标有误的解决方法 以.xml文件为例. 此为错误图标 此为正确图标 右键该文件,点击Override File Type 选中xml即可

  8. mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法

    mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法 参考文章: (1)mysql 直接从date 文件夹备份表,还原数据库之后提示 t ...

  9. ASP.NET 用 FlexPaper 在页面上显示 PDF 文件

    必要条件 演示 ASP.NET 用 FlexPaper 在页面上显示 PDF 文件 软件环境 解决方案结构 简单显示 SWF 文件 上传并显示 PDF 文件 常见问题 参考资料 其实,虽说是显示 PD ...

最新文章

  1. 跨云协作,看OpenStack起舞
  2. VB随笔 -基本语句之循环语句
  3. REST API URI 设计的七准则
  4. Linux基础维护——笔记
  5. python 追加到字典_扫描器篇(三)之python编写基于字典的网站目录探测脚本
  6. 很少人知道,但是非常实用的 Python 库
  7. (转)shiro权限框架详解06-shiro与web项目整合(下)
  8. python网页提交表单_Html表单——使用python在web页面上显示用户提交的数据
  9. mysql使用已有的数据库_使用SQL操作MySQL数据库
  10. Eclipse自动生成作者、日期注释等功能设置
  11. 文件和目录(一)--unix环境高级编程
  12. C# 两个datatable中的数据快速比较返回交集或差集
  13. java lambda有必要_深度分析:java8的新特性lambda和stream流,看完你学会了吗?
  14. Java项目:在线购书商城系统(java+jsp+mysql+servlert+ajax)
  15. 关于Autorelease和RunLoop
  16. python场景文字识别_场景文字识别Attention_飞桨-源于产业实践的开源深度学习平台...
  17. 计算机英语构词法,计算机专业英语的构词方法论文
  18. HDU-1425 排序
  19. SQL Server 数据库
  20. java wav转amr_AMR和WAV互相转换

热门文章

  1. 2022年全球市场衬衫面料总体规模、主要生产商、主要地区、产品和应用细分研究报告
  2. Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
  3. 考Java二级要不要背方法英文,英语二级必过方法
  4. 计算机中的变量和函数是什么意思,计算机中的变量和函数是什么意思?
  5. 爆肝推荐、血泪安装:2080ti显卡安装Ubuntu18.04+nvidia驱动+cuda10.0+cuDNN
  6. Ubuntu 下qq自动退出的解决方法(含wine的安装)
  7. android提醒功能,android service实现循环定时提醒功能
  8. nProtect APPGuard安卓反外挂分析
  9. 【剑桥摄影协会】RAW文件格式
  10. 帖子中的图片存储_一个2016年的恶意PS的图片谣言,竟能引起3000多条转发?