ホームページ  >  記事  >  バックエンド開発  >  php で mysql を Excel にエクスポートすると文字化けしてしまう場合はどうすればよいですか?

php で mysql を Excel にエクスポートすると文字化けしてしまう場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2020-08-31 10:08:502598ブラウズ

php が文字化けした mysql を Excel にエクスポートするための解決策: 最初にタイムゾーンとヘッダー情報を設定し、次に「ob_end_clean();」を通じてバッファをクリアし、次にテーブル情報を設定し、最後にコンテンツをクエリします。そしてデータベースデータをエクスポートします。

php で mysql を Excel にエクスポートすると文字化けしてしまう場合はどうすればよいですか?

推奨: 「PHP ビデオ チュートリアル

PHP クエリ データベースを Excel にエクスポートし、文字化けの問題を解決する, ネイティブ コードにはプラグインは必要ありません

#最近情報システムを作成し、データベースの内容を Excel にエクスポートする必要がありました

##コードを以下に投稿します。phpexcel は使用しません。プラグインが必要です

システム要件: php5.6

<?php
date_default_timezone_set(&#39;PRC&#39;);//设置时区
 
/*设置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(&#39;YmdHis&#39;).".xls");
Header("Pragma:no-cache");
Header("Expires:0");
 
$str = $str2 = null;
/*设置表格信息*/
$str.= "序号"."\t";
$str.= "学号"."\t";
$str.= "姓名"."\t";
$str.= "性别"."\t";
$str.= "学院"."\t";
$str.= "年级"."\t";
$str.= "班级"."\t";
$str.= "手机号"."\t";
$str.= "报名时间"."\t\r\n";
$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++)."\t";
    $str2.= trim(iconv("UTF-8","GBK","\t".$v[&#39;num&#39;]."\t"))."\t";
    $str2.= trim(iconv("UTF-8","GBK",$v[&#39;name&#39;]))."\t";
    $str2.= trim(iconv("UTF-8","GBK",$v[&#39;sex&#39;]))."\t";
    $str2.= trim(iconv("UTF-8","GBK",$v[&#39;xueyuan&#39;]))."\t";
    $str2.= trim(iconv("UTF-8","GBK",$v[&#39;grade&#39;]))."\t";
    $str2.= trim(iconv("UTF-8","GBK",$v[&#39;class&#39;]))."\t";
    $str2.= trim(iconv("UTF-8","GBK",$v[&#39;phone&#39;]))."\t";
    $str2.= trim(iconv("UTF-8","GBK",$v[&#39;time&#39;]))."\t\r\n";
}
echo $str2;
?>

このコード行は最初に追加されていないため、出力が文字化けしました。各データ生成の前にバッファをクリアするだけです。

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

以上がphp で mysql を Excel にエクスポートすると文字化けしてしまう場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。