导出csv文件乱码,不读取数据库,不用PHPExcel组件

 尝试着添加了 BOM 之后,中文乱码的问题有解决了。

  添加 BOM 到 CSV 文件中

  示例代码:

  $file = fopen($export_file_path, 'w');

  fwrite($file, chr(0xEF).chr(0xBB).chr(0xBF)); // 添加 BOM

  foreach ($contens as $content) {

          fputcsv($file, $content);

  }


ExcellentExport.js的方法,利用base64下载文件。支持chrome ,opera,firefox. 于是决定拿来为我所用!

说明一下,这个js的好处是:一句js脚本,就能前台下载,完全无须后台。

但外国人不了解中文的csv用excel打开直接乱码。 但用记事本打开,再直接保存,或另存为ansi都可以让中文不乱码。

想到BASE64可以保存图片。那么我要是用这工具分别编码一下正确和乱码的文件不就行了。

于是用:http://www.fishlee.net/Tools/GetImageBase64Code  来试了下,结果真找到了不同。

记事本另存的正确结果:77u/5bqP5Y+3LOS/oeaBrw0K5ae

直接保存,无BOM头的结果:5bqP5Y+3LOS/oeaBrw0K5ae

哈哈!把代码改为:

 
 
'77u/'+ base64(toCSV)

,解决问题! 

真是,4个字符折腾一天。真是只有4个字符。。。。。。。。

--------------------------------------

解释一下:ExcellentExport.js的思路,就是构造这样一个a标签:
<a target="_blank" href="data:application/csv;base64,5bqP5YNCg==" download="ok.csv" style="display: none;"><span>00</span></a>
把文字base64后,指定文件名,就可能通过<a>来前台下载文件了。完全无须后端。
 


header("Content-Type: application/vnd.ms-excel; charset=UTF-8"); //不一定有效,某些版本有可能依然乱码

 

300*300
 文章首页关于迷茫时代关于我写意人生
版权所有:迷茫时代 All rights reserved   
执行时间:0.00801 秒