java读取csv文件忽略bom头_PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法...
PHP 下载文件时自动添加bom头,首先需要大家弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。
在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了。
不仅限于 记事本保存的文件,只要在文件的开口包含了EF BB BF 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见)。这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的。
如果你的接口是UTF-8的,你需要强制下载一个文件,比如csv.excel在默认情况(中文背景)下,认为csv是GB编码的,所以如果米有bom头,那你给用户呈现的文件,可能就是乱码了。
怎么加bom头呢?
在输出文件之前加上bom头就可以了:
代码如下:
// 文件名
$filename = "www.jb51.net .csv";
header('Expires: ' . gmdate('D, d M Y H:i:s', $_SERVER['REQUEST_TIME'] + 10) . ' GMT');
header('Cache-Control: max-age=10');
//header('Content-Type: application/vnd.ms-excel; charset=utf-8');
header('Content-Type: text/csv; charset=utf-8');
header("Content-Disposition: attachment; filename={$filename}");
// 如果结果中有提示信息,则把第一行输出改为提示信息文字
$out = "xEFxBBxBF";// 加上bom头,系统自动默认为UTF-8编码
if (!empty($extra['notice'])) {
$out .= "{$extra['notice']}rn";
}
// 输出
foreach ($table as $row) {
$out .= implode(",", $row) . "rn";
}
/* if (mb_detect_encoding()($out) == 'UTF-8') {
$out = iconv("UTF-8//IGNORE", "GBK", $out);
} */
echo $out;
以下内容给大家介绍解释BOM头和去掉方法
去掉bom头的办法,简单的是下面两种:
1、editplus去BOM头的方法
编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。
运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了。
2、ultraedit去除bom头办法
打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就ok了
怎么样,去掉bom头很简单吧
再来一段议论utf8的BOM信息的
BOM是指php文件本身的存储方式为带BOM的UTF-8,普通页面的中文乱码方式一般不是由这个原因导致的。
header("Content-type: text/html; charset=utf-8");
这句话控制html输出页面的编码方式,BOM只有在WINDOWS下采用“记事本”存储为UTF-8时才会有,这个可以用WINHEX把开始的2个字节删掉。
在dreamweaver里面编码设置里面可以设置是否带BOM,一般只要php输出的不是图片(GDI Stream),BOM都不会导致问题。
GDI Stream如果开头有了额外的 字符就会显示为 红叉。
以上内容给大家介绍了PHP 下载文件时自动添加bom头及解释BOM头和去掉方法,希望大家喜欢。
java读取csv文件忽略bom头_PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法...相关推荐
- java读取csv文件_使用扫描仪读取Java中的CSV文件
java读取csv文件 We can use Java Scanner Class to read CSV File in java. 我们可以使用Java扫描程序类在Java中读取CSV文件. 读取 ...
- java 读取csv文件乱码_java读取csv文件乱码怎么解决
csv文件默认编码为ANSI,java读取CSV出现乱码主要是编码不一致问题.(推荐:java视频教程)DataInputStream in = new DataInputStream(new Fil ...
- java读取csv文件的两种方式
java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...
- Java读取pdf模板,并动态生成pdf文件,如动态生成准考证
Java读取pdf模板,并动态生成pdf文件,如动态生成准考证 前几天遇到了一个生成准考证的需求,并提供用户下载,然后百度了一圈还是觉得使用itextpdf这个框架好用点.但是还需要找到一个能创建 ...
- java文件客户端下载_使用Java写一个minio的客户端上传下载文件
标签:color ati tty java system wired format media param 前言: 确保已经安装了minio的服务端 代码: pom.x ...
- js下载文件 java_[Java教程]使用js实现点击按钮下载文件
[Java教程]使用js实现点击按钮下载文件 0 2016-11-11 19:02:54 有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方 ...
- java读取csv文件
2019独角兽企业重金招聘Python工程师标准>>> CSV其实就是COMMA SEPARATED VALUE的缩写. 在开发中用Java操作csv文件有专门的的API叫javac ...
- java读取csv文件行数_java读取巨大csv的行数
我有超过700K行的巨大csv行数.我必须解析那些csv的行和do ops.我想通过使用线程来做到这一点.我第一次尝试做的很简单.每个线程都应该有唯一的csv行.我只有有限的行数只能读到3000.我创 ...
- java读取csv文件的行数_JMeter 读取 CSV 文件数据行数
在用 JMeter 做测试时,经常需要调用外部 CSV 文件的数据到脚本中使用,如果我们想对 CSV 文件中数据的行数进行统计,这个怎么做呢? 针对上面表格的数据,我们一起来学习一下如何统计数据行数吧 ...
- java读取csv合适文件_解析-您可以推荐一个Java库来读取(并可能写入)CSV文件吗?...
Super CSV是读取/解析,验证和映射CSV文件到POJO的绝佳选择! 我们(Super CSV团队)刚刚发布了一个新版本(您可以从SourceForge或Maven下载它). 读取CSV文件 以 ...
最新文章
- 建站常用13种PHP开源CMS比较
- U811.1接口EAI系列之一--通用把XML传送给EAI处理方法--PowerBuilder语言
- 进程间通信-共享内存实例
- fatal error C1001的一个解决心得
- php mail 在线,在线web e-mail发送
- 《Java虚拟机原理图解》1.3、class文件里的訪问标志、类索引、父类索引、接口索引集合...
- java给方法参数赋值_java方法参数的赋值问题实例源码介绍
- oracle 登录不了的解决
- 做游戏开发,选择Unity还是Unreal?
- 面试必备:消息队列原理和选型(荣耀典藏版)
- 【手把手教程】uniapp + vue 从0搭建仿斗鱼虎牙直播App:腾讯云MLVB移动直播实践连麦PK+带货
- px4仿真无法起飞问题(Failsafe enabled: no datalink)
- ambiguous column name 错误
- 熟悉RT-Thread的软硬件环境【RT-Thread学习笔记 1】
- Python爬取豆瓣读书Top250(正则表达式)
- Unity3D-设置地形
- 82. 采用 OPA5 开发支持页面跳转的 SAP UI5 集成测试用例
- 关于工资、社保、公积金、个人所得税等小常识
- html 预览 base64 PDF
- 霹雳火s毕老师_$_Java笔记(一)