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的概念。BOM——Byte 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编码中不包含的字符就会都丢了。如果有一些非中文的字符在文件里的话还是不要用这种办法了。(从这一个小方面来看,UE——UltraEdite-32确实比Editplus好很多,Editplus太轻量级了)

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

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

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

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

    php 读取 csv 文件后, uft8bom 导致在页面上显示出现问题的解决方法 date.csv: "ID""NAME""EMAIL" ...

  2. maya导入arnold代理ass文件后,无法修改ass内贴图路径问题的解决方法

    一.问题描述 最近遇到了maya模型standIn方式导入arnold .ass格式后,贴图内部路径不对,无法在maya中直接修改的问题,而ass文件是很大文本格式数据.maya中没有现成的工具显示a ...

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

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

  4. 计算机u盘 硬盘无法读取,U盘、移动硬盘盘符不显示及无法识别解决方法

    U盘.移动硬盘盘符不显示及无法识别解决方法 发布时间:2012-12-21 17:36:04   作者:佚名   我要评论 我们使用的绝大多数移动硬盘和U盘都是使用USB接口,属于即插即用类型.我们经 ...

  5. 铭瑄H610itx升级E1.4G版本BIOS后HDMI不能输出音频(无HD audio选项)解决方法

    铭瑄H610itx升级E1.4G版本BIOS后HDMI不能输出音频(无HD audio选项)解决方法 1.下载BIOS修改工具 AMIBCP 5.02.0034(其他版本也可以) 2. 修改BIOS设 ...

  6. com加载项没反应 ppt wps_islide安装后不显示怎么办?islide安装后用PPT2016打开不显示的原因及解决方法介绍...

    islide安装后不显示怎么办?islide是一款功能十分强大的PPT美化工具,受到了很多行业人士的青睐,其中不仅能对PPT进行美化处理,还有海量的PPT模板,让你再也不用担心领导为你安排制作PPT的 ...

  7. 卸载Axmath 后,word加载项中还是有 Axmath 的解决方法

    我是自己之前不知道装什么的时候装了axmath,不是破解版.当我卸载重装时发现,卸不干净问题.找了很多方法,最后根据一位大佬卸载mathtype的方法给解决了.解决方法如下. 解决方法 在" ...

  8. linux显卡驱动运行情况,Linux装完显卡驱动后分辨率显示不正常的解决方法

    不少人在更新完Linux显卡驱动后,出现分辨率显示不正常的现象,遇到这类问题不用担心,下面小编就教你如何解决Linux显卡驱动安装后分辨率无法正常显示的问题,一起来学习下吧. 驱动安装: 这里得说明一 ...

  9. Driver not loaded Driver not loaded(QT打包后在别人的电脑上运行出现这个错误)解决方法

    Driver not loaded Driver not loaded(QT打包后在别人的电脑上运行出现这个错误)解决方法 出现这个错误,导致的原因有很多,所以不妨先试试我找的这种解决方法,我也是试过 ...

最新文章

  1. vue仿今日头条_vue2.0仿今日头条开源项目
  2. YOLO-FastestV2:更快,更轻!移动端高达300 FPS!参数量仅250k
  3. Apache Thrift - java开发详解
  4. BPMF论文辅助笔记:采样Ui 部分推导
  5. 开始报名!首次阿里巴巴经济体双 11 云原生实践展示
  6. Android 数据加密算法 Des,Base64详解
  7. 3高并发服务器:多路IO之epoll
  8. RHEL5搭建apache服务器全过程(四)配置heartbeat和ipvsadm
  9. Ansible 系统概述与部署(1)
  10. ZStack实践汇 | 详解ZStack高级功能--裸金属服务部署实践
  11. [转载]Win7微软官方正式版原版镜像下载总汇(附win7 OEM KEY密钥)
  12. 产品快速迭代的五大要点
  13. 博客园:CSS HTML
  14. NCRE公共基础知识(一) 计算机系统
  15. 2018工业互联网峰会在京召开
  16. 杭电acm—1376 Octal Fractions
  17. 【统计学】基本Stata使用手册(1):基本操作
  18. 别让自己 “墙” 了自己
  19. 手机软件开发环境种类介绍(转)
  20. DWZ (JUI) 教程 修正 Tab 选项卡多次加载

热门文章

  1. 【005】WikiDiff-英文近义词辨析网站
  2. 程序人生 - 猫吃鸡胸肉的好处?
  3. 口琴演奏《爱尔兰画眉》
  4. 什么是ES6? 为什么要学习ES6?
  5. FME处理表格转置的3种方式
  6. Java数据采集--1.准备工作
  7. Python all()函数
  8. 瞰见 | 初创1个月就融到3亿美金,ClickHouse 你凭什么?
  9. 计算机可以连接到网络但无法在浏览器冲浪,手动更改DNS
  10. curl php 传递meta标签内容,php中get_meta_tags()、CURL与user-agent用法分析