php 导出mysql csv 乱码_php导出csv文件打开乱码的解决方法
在php编程中,经常会导出数据为excel或csv文件,不过为了操作方便,大多时候我们会用php导出csv文件。
CSV,Comma Separator Value,常常用来数据转换的中间文件存在。
使用utf-8编码导出CSV文件,打开后中文成了乱码(Windows下CSV文件默认与Microsoft Excel关联),用Notepad++或者Word打开正常。
原因分析:
BOM惹的祸,微软惹的祸。
什么是BOM?Byte Order Mark。
为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE字符开头。这作为一个"特征符"或"字节顺序标记(byte-order mark,BOM)"来识别文件中使用的编码和字节顺序(big-endian或little-endian),具体的对应关系见下表。
BytesEncoding Form00 00 FE FFUTF-32
big-endianFF FE 00 00UTF-32
little-endianFE FFUTF-16
big-endianFF FEUTF-16
little-endianEF BB BFUTF-8
Unix系统中并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。
php源码文件是用NotePad++生成的,在Centos下执行,格式为:以UTF-8无BOM格式编码,因此要想导出Microsoft Excel可以正常显示的UTF-8的CSV文件,需要显式的输出BOM(EF BB BF,上表的最后一种类型),然后再输出Mysql中的有效数据。
实现如下的php函数:
复制代码 代码示例:
/**
* @param $file_name string 要导出的文件名,比如:mail-list.csv
* @param $content string 要输出的csv格式的数据,用逗号分隔各字段
* @return null
*/
function output_csv($file_name,$content)
{
$content = "\xEF\xBB\xBF".$content; //添加BOM
if( empty( $file_name ) )
{
$file_name = date("Ymd")."csv";
}
header( "Cache-Control: public" );
header( "Pragma: public" );
header( "Content-type: text/csv" ) ;
header( "Content-Dis; filename={$file_name}" ) ;
header( "Content-Length: ". strlen( $content ) );
echo $content;
exit;
}
?>
总结:
1,output_csv函数使用前,确保php源码是utf-8,并且无BOM,并且没有输出任何内容。
2,BOM实际上挺烦人,如果网页(*.html)有BOM,在IE6.x下打开会发现空行,Firefox下没有。
php 导出mysql csv 乱码_php导出csv文件打开乱码的解决方法相关推荐
- sql导出oracle错误12154,Oracle导dmp文件ORA-12154报错解决方法
Oracle导dmp出现文件ORA-12154: TNS: 无法解析指定的连接标识符解决方案 其实TNS无法解析是Oracle操作里经常遇到的问题,原因有二: (1)Oracle服务器没有装好(一般不 ...
- mysql装完是什么样儿的_Win7系统安装MySQL之后找不到指定文件与服务如何解决?...
Win7系统在安装MySQL之后服务或者指定文件都找不到怎么办?不少用户在电脑中安装MySQL之后,却遇到了找不到指定文件或者找不到服务的情况,那么为什么会出现这个问题呢?接下来小编就为大家分享安装m ...
- 0x80070003系统找不到指定路径_Win7系统安装MySQL之后找不到指定文件与服务如何解决?...
Win7系统在安装MySQL之后服务或者指定文件都找不到怎么办?不少用户在电脑中安装MySQL之后,却遇到了找不到指定文件或者找不到服务的情况,那么为什么会出现这个问题呢?接下来就为大家分享安装mys ...
- csv文件打开乱码解决
csv文件打开乱码解决 文章目录 csv文件打开乱码解决 前言 解决方法 前言 公司需要我导出csv的格式进行整理,如下图所示 我导出后用Excel打开却变成了乱码 解决方法 csv格式的文件可以使用 ...
- MySQL导出到excle显示不了_mysql导出select语句结果到excel文件遇到问题及解决方法_MySQL...
一.导出数据外部 1)mysql连接+将查询结果输出到文件.在命令行中执行(windows的cmd命令行,mac的终端) mysql -hxx -uxx -pxx -e "query sta ...
- CSV文件打开乱码解决方法
CSV文件打开乱码解决方法 问题: CSV文件通常可以用Excel打开,但有时会碰到直接用Excel打开是出现中文乱码的问题,如下图所示: 解决方法: CSV文件乱码问题一般是编码方式的问题,选择以记 ...
- scrapy生成csv文件空行、csv文件打开乱码(解决方案)
scrapy生成csv文件空行.csv文件打开乱码(解决方案) 参考文章: (1)scrapy生成csv文件空行.csv文件打开乱码(解决方案) (2)https://www.cnblogs.com/ ...
- Python写入到csv文件存在空行的解决方法
Python写入到csv文件存在空行的解决方法 参考文章: (1)Python写入到csv文件存在空行的解决方法 (2)https://www.cnblogs.com/crooswang/p/5953 ...
- MySQL 查询速度慢与性能差的原因与解决方法
MySQL 查询速度慢与性能差的原因与解决方法 更新时间:2019年09月26日 18:05:47 作者:Microtiger 随着网站数据量与访问量的增加,MySQL 查询速度慢与性能差的问题就日渐 ...
- mysql转储导入错误_数据库MYSQL导入SQL文件时错误的解决方法(2种)
从服务器数据库用navicate导出的.sql文件后再用navicate导入到本地的数据库中会出现若干条记录的错误: [Err] 1064 – You have an error in your SQ ...
最新文章
- 用友云平台,真正的云原生架构,加速云应用落地
- Android -- View移动的六种方法
- windows2008系统启动weblogic报错
- phpHiveAdmin开发两个月记录
- C++末尾匹配(C与C++解决)
- 算法分析与设计——分治法最近点对
- 面向对象3(final、static、instanceof、向上/向下转型、初始化次序)
- 电气期刊论文实现:考虑斜坡约束、开停机时间约束的电力机组组合(程序讲解)
- 最值得程序员get的30本行业干货
- [pytorch] Pytorch入门
- 最重要的 Java EE 最佳实践
- hdfs文件系统无法在网页上显示
- RabbitMQ中Confirm确认与Return返回消息详解(八)
- VC++多线程--进程间通信
- Elasticsearch安装与分词插件、用户词典、同义词配置等
- 有趣的微分方程传之可分离变量的微分方程
- 使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗)
- angular报$injector / unpr的错误
- 【实验技术笔记】融合基因 + 长片段基因 + 突变基因 表达载体构建
- LSM 树(Log-Structured Merge-Tree) 原理
热门文章
- Degenerate Dimensions(原创)
- Java毕设项目中药材电子商务平台计算机(附源码+系统+数据库+LW)
- Arduino学习笔记(7)- 多线程技术
- 教程5 Vue3常用内置指令(插值、v-bind、v-model、v-on、v-text、v-html、v-once、v-pre、v-cloak、v-slot)
- 基于Kotlin ShareFlow封装事件总线EventBus
- 【秃头系列】-【本科生毕设论文格式Word】自动生成图表公式题注并交叉引用
- 二进制补码为什么是原码取反加一
- 百度地图显示无法连接服务器,百度地图为什么打不开该怎么解决
- 2022款红旗H5安装百度地图使用北斗导航
- vue+Element+select满足条件后将选择框清空