首頁 >後端開發 >PHP問題 >php下載excel亂碼怎麼辦

php下載excel亂碼怎麼辦

藏色散人
藏色散人原創
2020-08-27 11:05:092658瀏覽

php下載excel亂碼的解決方法:1、在下載的過程中取消任何非檔案資訊的輸出;2、將輸出的excel格式和後綴名保存一致;3、用「ob_clean」方法清空緩衝區。

php下載excel亂碼怎麼辦

推薦:《PHP影片教學》 

寫程式碼,使用PHP下載一個我已經上傳好的Excel時會出現這個錯誤:

強制開啟則出現亂碼。

搜尋了一下,有兩個解釋:

1、在下載的過程中不要 輸出任何非檔案訊息,例如 echo log訊息。否則下載後的檔案無法打開,提示格式錯誤或檔案被破壞。
2、 輸出的excel格式一定要和後綴名保存一致,否則會提示格式錯誤或檔案被破壞。

於是我更改了點擊下載的a標籤的位置,檢查了excel後綴名,都沒有作用。

後來搜尋到可能是BOM頭的問題,因為打開亂碼的文件,前面都會有「0xEF 0xBB 0xBF」三個字元。而PHP無法辨識BOM頭。

BOM頭的解釋:在utf-8編碼檔案中BOM在檔案頭部,佔用三個位元組,用來標示該檔案屬於utf-8編碼。它平時是一串隱藏的字符,許多軟體可以識別並忽略BOM頭,而PHP則不能。

因此,可以將需要上傳的檔案用editplus、ultraedit或WINHEX等軟體去掉BOM頭之後,再上傳。已經下載下來的則去掉BOM頭再打開。

另外,也可以在你的readfile、fread,也就是輸出前面加上一句程式碼:ob_clean() 來清空緩衝區。

以上是php下載excel亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn