PHP 下载文件时自动添加bom头的方法实例

 更新时间:2014年01月10日 15:44:03   作者:  
这篇文章主要介绍了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正则表达式中修饰符/i, /is, /s, /isU

    浅谈PHP正则表达式中修饰符/i, /is, /s, /isU

    我们在PHP正则表达式的学习中会碰到修饰符,那么关于PHP正则表达式修饰符的理解以及使用我们需要注意什么呢?那么我们来具体的看看它的概念以及相关内容。
    2014-10-10
  • 一些关于PHP的知识

    一些关于PHP的知识

    一些关于PHP的知识...
    2006-11-11
  • php进程通信之共享内存详细讲解

    php进程通信之共享内存详细讲解

    这篇文章主要介绍了php进程通信之共享内存,共享内存是一种最为高效的进程间通信(IPC)方式,进程可以直接读写内存,而不需要任何数据的拷贝
    2022-09-09
  • 对比PHP对MySQL的缓冲查询和无缓冲查询

    对比PHP对MySQL的缓冲查询和无缓冲查询

    PHP中使用函数查询MySQL中的数据默认是以缓冲模式,除此之外MySQL程序还支持一种无缓冲模式,本文我们将来对比PHP对MySQL的缓冲查询和无缓冲查询:
    2016-07-07
  • PHP利用str_replace防注入的方法

    PHP利用str_replace防注入的方法

    str_replace()函数的使用就是用来替换指定字符了,可以利用这一点来过滤敏感字符以太到防注入的效果
    2013-11-11
  • PHP简单实现文本计数器的方法

    PHP简单实现文本计数器的方法

    这篇文章主要介绍了PHP简单实现文本计数器的方法,涉及PHP针对文本文件的简单判断,读取及写入等操作技巧,需要的朋友可以参考下
    2016-04-04
  • PHP静态新闻列表自动生成代码

    PHP静态新闻列表自动生成代码

    PHP静态新闻列表自动生成代码...
    2007-06-06
  • PHP安全防范技巧分享

    PHP安全防范技巧分享

    这里简单介绍一些基本编程要点, 相对系统安全来说,php安全防范更多要求编程人员对用户输入的各种参数能更细心.
    2011-11-11
  • php实现插入排序

    php实现插入排序

    本文给大家分享的是使用php实现插入排序的方法,十分的简单实用,有需要的小伙伴可以参考下。
    2015-03-03
  • php事件驱动化设计详解

    php事件驱动化设计详解

    这篇文章主要介绍了php事件驱动化设计,结合实例形式较为详细的分析了php事件驱动化所涉及的信号量、共享内存与进程间通信相关概念与操作技巧,需要的朋友可以参考下
    2016-11-11

最新评论