php 產生csv mac下亂碼

來源:互聯網
上載者:User
這篇文章主要介紹了php 產生csv mac下亂碼 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下


<?php     $file_name = date('Ymd', time()) . '.csv';  //設定檔案名稱     header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename='.$file_name);header('Cache-Control: max-age=0');$fp = fopen('php://output', 'a');$row = ['name' => '測試','email' => 111111,'mobile' => 22222,'weixinid' => '號',];fwrite($fp,"\xEF\xBB\xBF");fputcsv($fp, $row);


php匯出csv檔案亂碼問題解決方案



說 這個問題之前首先來說一下什麼是CSV檔案?Comma Separator Value(逗號分隔值)是也。常常用來資料轉換的中間檔案存在,比如:從Mysql中匯出資料到CSV,匯入CSV到SqlServer中。在 Linux下用PHP指令碼從Mysql資料庫中將表的資料按照條件匯出成csv,使用utf-8編碼匯出CSV檔案,開啟后里邊的中文成了亂碼 (Windows下CSV檔案預設與Microsoft Excel關聯),用Notepad++或者Word開啟正常,不過排版很亂。原因:BOM惹的禍,微軟惹的禍。

什麼是BOM?Byte Order Mark(位元序標記)是也。

為 了識別 Unicode 檔案,Microsoft 建議所有的 Unicode 檔案應該以 ZERO WIDTH NOBREAK SPACE字元開頭。這作為一個”特徵符”或”位元組順序標記(byte-order mark,BOM)”來識別檔案中使用的編碼和位元組順序(big-endian或little-endian),具體的對應關係見下表。

Bytes Encoding Form

00 00 FE FF UTF-32, big-endian
FF FE 00 00 UTF-32, little-endian
FE FF UTF-16, big-endian
FF FE UTF-16, little-endian
EF BB BF UTF-8


類Unix系統中並沒有使用 BOM,因為它會破壞現有的 ASCII 檔案的文法約定。

實現代碼如果

註:在寫csv檔案時確保php源碼是utf-8,並且無BOM,並且沒有輸出任何內容。




Excel在讀取csv的時候是通過讀取檔案頭上的bom來識別編碼的,如果檔案頭無bom資訊,則預設按照unicode編碼讀取。(這個bom是微軟自己定義的一種檔案頭部協定,顧名思義儲存在檔案頭部,儲存內容就是標識檔案編碼的資訊。)

而我們產生csv的平台不一定遵循微軟的bom協議,導致如果輸出非unicode編碼的csv檔案(例如utf-8),並且沒有產生bom資訊的話,Excel自動按照unicode編碼讀取,就會出現亂碼問題了。

掌握了這點相信亂碼已經無法阻擋我們前進的步伐了:只需將非unicode編碼的csv檔案,用文字編輯器(推薦notepad++)開啟並轉換為帶bom的編碼形式(具體編碼方式隨意),問題解決。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.