mysql 数据导出到excel 为什么汉字变成问号

发布网友 发布时间:2022-04-28 04:28

我来回答

7个回答

懂视网 时间:2022-04-28 08:50

php导出mysql到excel乱码的解决办法:首先设置时区以及head头信息;然后通过“ob_end_clean();”清除缓冲区;接着设置表格信息;最后查询内容导出数据库数据即可。

推荐:《PHP视频教程》

PHP查询数据库导出excel并且解决乱码问题,原生代码无需插件

近日写一个信息系统,需要把数据库的内容导出到excel

下面把我的贴出我的代码,不需要phpexcel插件

系统要求:php5.6+

<?php
date_default_timezone_set('PRC');//设置时区
 
/*设置head头信息*/
ob_end_clean();//清除缓冲区,避免乱码
Header("Content-Type:application/vnd.ms-excel;charset=UTF-8");
Header("Accept-Ranges:bytes");
Header("Content-Disposition:attachment;filename="."导出excel的名字".date('YmdHis').".xls");
Header("Pragma:no-cache");
Header("Expires:0");
 
$str = $str2 = null;
/*设置表格信息*/
$str.= "序号"."	";
$str.= "学号"."	";
$str.= "姓名"."	";
$str.= "性别"."	";
$str.= "学院"."	";
$str.= "年级"."	";
$str.= "班级"."	";
$str.= "手机号"."	";
$str.= "报名时间"."	
";
$info = iconv("UTF-8","GBK",$str);
echo $info;
 
/*查询内容导出数据库数据*/
$con = new mysqli("localhost", "root", "password", "detabase");
if (!$con) {
 die(mysqli_error()) ;
}
//$sql = " select * from bmxx";
//$res = mysqli_query($con, $sql);
 
mysqli_query($con,"SET NAMES utf8");//解决数据库中有汉字时显示在前台出现乱码问题
$result = mysqli_query($con,"SELECT * FROM `bmxx`");
 
while($row = mysqli_fetch_assoc($result)){
 $list[] = $row;
}
mysqli_free_result($result);
mysqli_close($con);
$co = 1;
foreach($list as $v){
 $str2.= trim($co++)."	";
 $str2.= trim(iconv("UTF-8","GBK","	".$v['num']."	"))."	";
 $str2.= trim(iconv("UTF-8","GBK",$v['name']))."	";
 $str2.= trim(iconv("UTF-8","GBK",$v['sex']))."	";
 $str2.= trim(iconv("UTF-8","GBK",$v['xueyuan']))."	";
 $str2.= trim(iconv("UTF-8","GBK",$v['grade']))."	";
 $str2.= trim(iconv("UTF-8","GBK",$v['class']))."	";
 $str2.= trim(iconv("UTF-8","GBK",$v['phone']))."	";
 $str2.= trim(iconv("UTF-8","GBK",$v['time']))."	
";
}
echo $str2;
?>

一开始没有加这行代码,导致输出乱码。在每次生成数据之前,清除一下缓冲区就好了、

ob_end_clean();//清除缓冲区,避免乱码

热心网友 时间:2022-04-28 05:58

出现乱码是因为mysql设置编码GB2312 后,在navicat里连接要要选择mysql默认字符集,创建数据库时候选默认字符集,创建表的varchar字段(或其他字符字段)都不用选择编码,系统默认gbk编码,就不会出现乱码了。

  如果已经创建好了表乱码就要把UTF8、gbk、gbk2312编码都调整过来才可以,特别是要大概设计表,把有关字符的字段每个都设置改为gbk即可。

热心网友 时间:2022-04-28 07:16

excel 默认使用操作系统本地字符集,简体中文环境为GB2312
MySQL要看服务器设置,很多人会设置为UTF-8,以便兼容更多的字符集。
可以通过show variables like '%character%'; 查看当前数据库的字符集信息。
根据需要转换connection的、client的字符集。

热心网友 时间:2022-04-28 08:50

如果使用的是Navicat,在导出的时候选择”高级“,然后选择编码为ANSI

热心网友 时间:2022-04-28 10:42

估计是编码格式的的问题 看看你数据的用的什么格式 导出的时候也用一种格式

热心网友 时间:2022-04-28 12:50

编码问题

热心网友 时间:2022-04-28 15:14

需要转换编码

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com