你指定的PHPExcel生成的是xls格式的文件。是一種電子表格格式,這種格式一般是用excel打開(kāi)處理的。直接用文本方式顯示就是亂碼的。但為什么是直接輸出這些亂而不是下載呢?是因?yàn)槟銢](méi)有給輸出指定頭信息告訴瀏覽器輸出的內(nèi)容不是直接顯示而是供下載的,瀏覽器所以瀏覽器也不懂,它只好老老實(shí)實(shí)給輸出來(lái)。你試著在上面那段代碼前加上如下內(nèi)容:
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、天壇街道網(wǎng)絡(luò)推廣、小程序開(kāi)發(fā)、天壇街道網(wǎng)絡(luò)營(yíng)銷、天壇街道企業(yè)策劃、天壇街道品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供天壇街道建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
header("Cache-Control: public");
header("Pragma: public");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type:application/download");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=你自己指定或生成文件名.xls");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
鏈接數(shù)據(jù)庫(kù)成功后 直接寫 mysqli_set_charsset(xxoo,"utf8")
xxoo自己換成需要的
數(shù)據(jù)庫(kù)采用UTF8編碼,而頁(yè)面申明編碼是GB2312,這是最常見(jiàn)的產(chǎn)生亂碼的原因。這時(shí)候在PHP腳本里面直接SELECT數(shù)據(jù)出來(lái)的就是亂碼,需要在查詢前先使用:mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");來(lái)設(shè)定MYSQL連接編碼,保證頁(yè)面申明編碼與這里設(shè)定的連接編碼一致(GBK是GB2312的擴(kuò)展)。如果頁(yè)面是UTF-8編碼的話,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如頁(yè)面申明的編碼與數(shù)據(jù)庫(kù)內(nèi)部編碼一致可以不設(shè)定連接編碼。
事實(shí)上MYSQL配置文件my.ini中定義了2個(gè)默認(rèn)編碼,分別是[client]里的default-character-set和[mysqld]里的default-character-set來(lái)分別設(shè)定默認(rèn)時(shí)候客戶端連接和數(shù)據(jù)庫(kù)內(nèi)部所采用的編碼。上面指定的編碼其實(shí)是MYSQL客戶端連接服務(wù)器時(shí)候的命令行參數(shù)character_set_client,來(lái)告訴MYSQL服務(wù)器接受到的客戶端數(shù)據(jù)是什么編碼的,而不是采用默認(rèn)編碼。
轉(zhuǎn)自:
數(shù)據(jù)載入的時(shí)候是亂碼還是正常,是從別人機(jī)器上導(dǎo)出數(shù)據(jù)自己恢復(fù)的嗎?
查看下數(shù)據(jù)庫(kù)的字符集編碼,show
vaiables
like
'%char%'
查看下字符集
使用下latin1
因?yàn)樗悄J(rèn)的
,不行就把數(shù)據(jù)庫(kù)刪了重新建立在導(dǎo)入數(shù)據(jù)