在输出文件之前加上bom头就可以了,只要在文件的开口包含了EF BB BF
分类:威尼斯登录首页

bom头实乃三个百般讨厌的事物,有时因为bom头引致页面乱码之类的标题,但部分时间加bom头是必得的,下边大家来看叁个PHP 下载文件时自动增多bom头的章程,希望文章对大家有帮带。

第一弄精通,什么是bom头?在Windows下用记事本之类的前后相继将文件文件保留为UTF-8格式时,记事本会在文书头前边加上多少个不可以知道的字符(EF BB BF),正是所谓的BOM(Byte order Mark)。
不单限于 记事本保存的文件,只要在文件的出口富含了EF BB BF 多少个不可以见到的字符(十一进制应该是是xEFxBBxBF,用二进制编辑文件可以看见)。那疑似叁个蔚然成风的东西,当系统看见那东西的时候,就可以认为你那个文件是UTF-8编码的。

先是弄理解,什么是bom头?在Windows下用记事本之类的次第将文件文件保留为UTF-8格式时,记事本会在文件头前边加上多少个不可以预知的字符,就是所谓的BOM。不止限于 记事本保存的公文,只要在文件的开口满含了EF BB BF 多少个不可以预知的字符。那疑似一个靡然从风的东西,当系统见到那玩意儿的时候,就能够感到您这几个文件是UTF-8编码的。

只要您的接口是UTF-8的,你须要强逼下载二个文件,比方csv.excel在暗许情状(中文背景)下,以为csv是GB编码的,所以假若米有bom头,这你给顾客显示的文本,大概便是乱码了。

比如您的接口是UTF-8的,你必要强逼下载二个文件,举个例子csv.excel在暗许情状下,感觉csv是GB编码的,所以假设米有bom头,那你给顾客展现的公文,可能就是乱码了。

怎么加bom头呢?
在出口文件从前增进bom头就能够了:

怎么加bom头呢?在输出文件从前增进bom头就足以了:

 代码如下

代码如下复制代码

                // 文件名
  $filename = "file.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;

// 文件名$filename = file.csv;header('Expires: ' . gmdate('D, d M Y H:i:s', $_SERVER['REQUEST_TIME'] + 10卡塔尔(قطر‎ . ' 罗红霉素T'State of Qatar;header('Cache-Control: max-age=10'State of Qatar;//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头就可以了,只要在文件的开口包含了EF BB BF

上一篇:威尼斯登录首页使用端口8080,可以看到有一个名为Apache2的文件夹 下一篇:smarty结合xajax检测用户名简单实例 Author
猜你喜欢
热门排行
精彩图文