php下載excel亂碼的解決方法:1、在下載的過程中不要輸出任何非檔案資訊;2、將輸出的excel格式和後綴名保存一致;3、使用「ob_clean()」函數清空緩衝區。
推薦:《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中文網其他相關文章!