解決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)
 
 
 
參考:






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM