解决PHP使用CVS导出Excel乱码问题

在使用PHP生成CVS文件后通过Excel打开发现中文全部变成了乱码,之前在我本地win08通过WPS正常的,但上传到服务器Linux在服务器上测试出现了乱码

一开始以后是Linux的问题但后来测试时发现是WPS的问题(猜测可以是WPS对编码做了处理,服务器上通过Excel打开也是乱码的)

因为我的PHP文件和数据库里的编码都是UTF-8格式而且使用文本编辑器打开的编码也是UTF-8的

 

PHP代码

导出的CVS文档,使用文本编辑器打开是没有乱码

使用Excel打开却是乱码

网上很多人说将数据库中的数据由UTF-8转换成GBK或者在header中指定编码,这两种方式都尝试过但仍然没有用

$html .= iconv("UTF-8","GBK",$row[$key]).$tab;

header("Content-type: text/html; charset=utf-8")

于是在这篇文章中发现只要在导出文档之前添加BOM之后就解决了: PHP 导出 CSV 文件用 Excel 打开出现中文乱码

但由于BOM后每一行的单元格就合并成一个了(\t)但使用Table来解决换行问题,但意外的发现使用Table后就解决了乱码问题(不需要BOM)

解决办法:

  1. PHP文件编码为UTF-8,并指定header的编码为

    UTF-8 header("Content-type:application/vnd.ms-excel;charset=UTF-8");
  2. 数据库编码设置为UTF-8
  3. 并使用table来进行布局(在导出文档之前添加BOM)

参考:

php 导出excel,中文乱码问题

PHP 导出 CSV 文件用 Excel 打开出现中文乱码

PHP 生成 csv 文件时乱码解决

php导出excel 乱码求解

php导出excel(csv)无乱码—完美篇

PHP中文乱码解决办法

来自为知笔记(Wiz)

时间: 2024-08-28 12:22:42

解决PHP使用CVS导出Excel乱码问题的相关文章

Asp.net导出Excel乱码的解决方法

通过跟踪Asp.net服务器代码,没有乱码,然而导出Excel到浏览器后,打开时出现乱码. 解决方法是添加编码格式的前缀字节码:Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); ? 1 2 3 4 5 6 7 8 9 10 11 12 13 Response.Clear(); Response.AddHeader("content-disposition","attachment;filenam

JDE报表开发笔记(Client端导出Excel乱码)

之前导出Excel时没发生任何问题, Client端PL/SQL字符集为UTF-8 Oracle JDE E910字符集为UTF-8 解决方式:添加指定用户的字符集(上图即为修改后的用户字符集) 角色人员配置字符集如下图所示(100095为后添加的字符配置): 设置字符集路径如下图: 添加后点击激活指定的用户字符集

CI-Excel-Generation-Library php导出excel乱码。

修改 private function generate($headers, $data) {        $this->set_headers();        $data = "\xFF\xFE" .mb_convert_encoding($data,"GBK");//转换为GBK.解决乱码问题.        echo "$headers\n$data";      }

vue 导出excel 乱码

经过小女子的不懈努力,终于解决了. 1.第一步:axios 接口请求的一定要传 ,下图仅供参考 responseType: 'blob' 2.调用接口 看后台返回的是二进制流还是blob对象 (1)是二进制流需要用   new Blob([res.data], {type: 'application/octet-stream'}); 转化成 Blob对象 (2)那就方便了直接使用 3.拿到文件就开始下载了 let url = window.URL.createObjectURL(res.data

jxl导入/导出excel

转自:http://www.cnblogs.com/linjiqin/p/3540266.html 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook;

web页面导出到Excel乱码解决

引言: 前几天 在做web项目的时候 需要导出页面上的数据 到Excel里面 但有的时候出现乱码(有de时候不出现 很奇怪) 原来的代码是这样的: HttpContext.Current.Response.Clear(); HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=FileName.xls"); HttpContext.Current.Resp

asp.net 导出excel 中文乱码解决方法 (转)

用我转载的上一篇文章 Asp.net中把DataTable或DataGrid导出为Excel 导出的文档,中文有乱码现象,其实要解决中文乱码很简单,设置一下字符集.如下: // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312&

Java web中不同浏览器间导出Excel文件名称乱码问题解决方案

问题描述: 对于不同浏览器存在对中文编码格式问题,从而在导出Excel文件时,中文文件名出现乱码的情况,即在程序中给要导出的文件指定一个中文名字时,在浏览器上出现的下载框中的文件名出现了乱码,解决如下: 解决方案: [java] view plain copy Date dt=new Date();//如果不需要格式,可直接用dt,dt就是当前系统时间 DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//设置显示格

关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法

转载自 阿姆的博客 关于asp.net C# 导出Excel文件打开Excel文件格式与扩展名指定格式不一致的解决办法 导致“文件格式与扩展名指定格式不一致”这个问题,是因为大多数人在导出excel文件的时候,都是默认保存excel的格式, 也就是直接workbook.Save(path)或者workbook.SaveAs(path).进而忽略了SaveAs方法里面的参数.与保存excel文件格式有 关的是它第二个参数FileForMat. FileFormat 类型:System.Object