使用php下載的檔案打不開,自己用著沒問題,客戶用就不行?

來源:互聯網
上載者:User

標籤:模式   添加   php   ued   strong   php開發   utf8   作業系統   lin   

1 現象:

  開發的時候用的好好的檔案下載功能,部署到客戶那邊就不好使了,幾乎所有從伺服器下載下來的檔案都不能開啟。

  比較了上傳前的檔案、上傳後伺服器端的檔案、下載後原生檔案,發現同一個檔案,上傳後還好好的,通過PHP下載下來就多了3個位元組。

  使用uediter用16進位模式開啟檔案發現檔案頭部多了“EF BB BF”這三個位元組。

2 分析:

  上網很容易查到這三個位元組叫bom頭,windows用來標識這是個utf8格式的檔案。

  一開始很容易想岔,比如在下載檔案的時候刪除這個bom頭、比如強制windows在下載的時候不添加這個bom頭,可惜以上方法是不可能實現的。

  最後看到某大神在某文章裡留言說,如果PHP檔案自己帶著一個bom頭,那麼通過這個PHP檔案下載的檔案就會自動被添加上bom頭!

  於是我下載了伺服器端的PHP檔案,探索服務器端的PHP檔案還真的多了這三個位元組!而我本地的PHP檔案沒有!

  那這三個位元組是哪裡來的呢?

  因為客戶在上傳這個PHP檔案前用記事本編輯了該檔案!!!!!!

  因為我們使用編譯器的時候,考慮到中文問題,一般會將PHP檔案設定成utf-8格式,整個項目都是utf-8的。

  如果用記事本編輯了這個utf-8格式的檔案,系統就會自動給它加上一個BOM頭,備忘這是個utf-8格式的檔案,系統以後方便識別這個檔案!!!

  終極原因還是因為PHP開發的時候就沒考慮到中文問題,所以必須用utf-8格式,而作業系統為了方便自己就給檔案前面加bom頭!

  所以機緣巧合之下,看到這篇文章的你,也遇到這個問題啦。

3 解決辦法:

  很簡單,把沒有用記事本編輯過的PHP檔案發給客戶就問題解決啦!

  並且叮囑客戶不要用記事本去開啟這些檔案!!!

使用php下載的檔案打不開,自己用著沒問題,客戶用就不行?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.