PHP 下载文件时自动添加bom头的方法实例
首先弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。
不仅限于 记事本保存的文件,只要在文件的开口包含了EF BB BF 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见)。这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的。
如果你的接口是UTF-8的,你需要强制下载一个文件,比如csv.excel在默认情况(中文背景)下,认为csv是GB编码的,所以如果米有bom头,那你给用户呈现的文件,可能就是乱码了。
怎么加bom头呢?
在输出文件之前加上bom头就可以了:
代码如下:
// 文件名
$filename = "www.jb51.net.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;
相关推荐
-
php利用header函数实现文件下载时直接提示保存
复制代码 代码如下: <?php $filename = '路径+实际文件名'; //文件的类型 header('Content-type: application/pdf'); //下载显示的名字 header('Content-Disposition: attachment; filename="保存时的文件名.pdf"'); readfile("$filename"); exit(); ?> 下面是网上常用的方法 复制代码 代码如下: if (is
-
Php中文件下载功能实现超详细流程分析
客户端从服务端下载文件的流程分析: 浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),该网页的代码如下. 服务器接受到该请求以后,马上运行该down.php文件 运行该文件的时候,必然要把将要被下载的文件读入内存当中(这里是圣诞狂欢.jpg这张图片),这里通过fopen()函数完成该动作 注意:任何有关从服务器下载的文件操作,必然需要先在服务端将文件读入内存当中 现在文件已经在内存当中了,这是需要从内存当中读取文件,通过fread()函数完成该动作 需要注意的是,如果文件较
-
php下载文件,添加响应头的简单实例
如下所示: //下载,添加响应头信息 header('Content-type:application/octet-stream'); header('Content-Disposition:attachment;filename="'.basename($file).'"'); header('Content-Length:'.filesize($file)); readfile($file); 以上就是小编为大家带来的php下载文件,添加响应头的简单实例的全部内容了,希望对大家有所
-
php实现文件下载代码分享
简单的文件下载只需要使用HTML的连接标记<a>,并将属性href的URL值指定为下载的文件即可.所示: <a href="http://www.jb51.net/download/book.rar">下载文件</a> 如果通过上面的代码实现文件下载,只能处理一些浏览器不能默认识别的MIME类型文件,例如当访问book.rar文件时,浏览器并没有直接打开,而是弹出一个下载提示框,提示用户"下载"还是"打开"等处
-
php实现文件下载功能的几个代码分享
一个简单的php文件下载源代码,虽不支持断点续传等,但是可以满足一些常用的需求了.php下载文件其实用一个a标签就能实现,比如 <a href="web/magento-1.8.1.0.zip">magento-1.8.1.0.zip</a> .但是遇到一些浏览器能识别的格式,比如.txt,.html,.pdf等,再用<a href="web/abc.txt">abc.txt</a> 想必也知道会发生什么了. 复制代码
-
PHP 下载文件时自动添加bom头的方法实例
首先弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark).不仅限于 记事本保存的文件,只要在文件的开口包含了EF BB BF 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见).这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的. 如果你的接口是UTF-8的,你需要强制下载一个文件,
-
Pycharm在创建py文件时,自动添加文件头注释的实例
1.选择File -> Settings 2.选择 File and Code Templates -> Files -> Python Script 编辑代码的样式 #!/usr/bin/env python # encoding: utf-8 ''' @author: caopeng @license: (C) Copyright 2013-2017, Node Supply Chain Manager Corporation Limited. @contact: deamoncao
-
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编码后执行就会出错的原因了. 不仅限
-
PyCharm新建.py文件时默认添加信息的实现
目录 新建.py时默认添加信息 点击pycharm的右上角的file出现如下图点击settings 接着就是找到如下图的地方 在里面加上想要创建文件之后就默认添加的内容 新建.py文件时自动添加文件头注释 选择File -> Settings 在setting => Editor中增加如下配置 新建.py时默认添加信息 对于pycharm我们每次新建Python文件时需要加的注释信息和作者时间等信息可以使用模板的方式,这样每次新建文件之后就默认添加比较方便. 点击pycharm的右上角的fil
-
asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名
引言 用WebClient下载远程资源时,经常会遇到类似这样的网址: http://www.uushare.com/filedownload?user=icesee&id=2205188 http://www.guaishow.com/u/luanfujie/g9675/ 我们不知道这个Url具体代表的是一个网页,还是某种类型的文件. 而有些Url虽然带有扩展名,但可能是错误的扩展名,常见的比如把gif文件标上了jpg扩展名. 如果我们没法正确判断下载源的文件类型的话,就无法保存为正确的文件格式
-
PHP批量删除、清除UTF-8文件BOM头的代码实例
记得运行代码前先把文件备份一下哦,避免出现失败问题. 代码一: function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($char
-
iOS Xcode创建文件时自动生成的注释方法
之前换了电脑,发现用xcode新建文件生成的注释变成了我不想要的效果(如下图) 一.修改系统默认注释 下面分别描述一下"创建者"."创建时间"."机构名称"以及"类名前缀"如何编辑. 1.编辑创建者: 进入路径:系统偏好设置/用户与群组/右击当前用户进入"高级选项" 编辑"全名"为需要的名称,如图: 2.编辑"创建时间"格式: 进入路径:系统偏好设置/日期与时间/打开
-
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
有时候我们传.py文件给别人时,需要添加一些文件头注释.为了不用每次新建文件时都去手动添加作者.创建日期等信息,我们可以设置一套模板,在新建.py文件的时候自动使用这套模板. 一. 模板设置 1.1 操作步骤 打开pycharm后,点击 File --> Settings ,进入设置界面 点击 Editor --> File and Code Templates --> Python Script 在右侧添加上你想注释的内容,如下图所示 代码模板如下(可以根据自己需要进行修改) #!/u
-
python下载文件时显示下载进度的方法
本文实例讲述了python下载文件时显示下载进度的方法.分享给大家供大家参考.具体分析如下: 将这段代码放入你的脚本中,类似:urllib.urlretrieve(getFile, saveFile, reporthook=report) 第三个参数如下面的函数定义report,urlretrieve下载文件时会实时回调report函数,显示下载进度 def report(count, blockSize, totalSize): percent = int(count*blockSize*10
随机推荐
- AngularJS基于provider实现全局变量的读取和赋值方法
- 当 MUST_CHANGE 为 ON (开)时,不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)
- 王纯业的Python学习笔记 下载
- php使用fsockopen函数发送post,get请求获取网页内容的方法
- PHP+MYSQL会员系统的开发实例教程
- sql2005 存储过程分页代码
- Qt如何设置窗口屏幕居中显示以及设置大小
- 原生JS实现网络彩票投注效果
- jQuery消息提示框插件Tipso
- 几个有用的unix命令快捷键整理
- .NET中保证线程安全的高级方法Interlocked类使用介绍
- apache SHTML网页SSI使用详解
- 来自西部数码的WEB服务器安全设置
- 深入剖析Android消息机制原理
- Java探索之Feign入门使用详解
- php创建sprite
- Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
- Docker下安装ElasticSearch和Kibana的示例代码
- 高效使用Python字典的清单
- Java数组扩容实现方法解析