php匯出csv檔案亂碼有關問題解決辦法

來源:互聯網
上載者:User
php匯出csv檔案亂碼問題解決方案

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),具體的對應關係見下表。

?

BytesEncoding 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,並且沒有輸出任何內容。


BOM實際上挺煩人,如果你的網頁(*.html)有BOM,在IE6.x下面開啟會發現一神奇的空行,Firefox下卻沒有

?

來源:http://www.i-felix.cn/blog/phpdao-chu-csvwen-jian-luan-ma-wen-ti-jie-jue-fang-fa-gai-si-de-wei-ruan

?

?

1 樓 xiaoshenge 2012-09-03

學習了,以前只知道需要把編碼轉換一下,原來還有一種簡單的方法。

2 樓 天梯夢 2012-09-05

是的,編碼轉換有時候不實際!

  • 聯繫我們

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