這篇文章主要介紹了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惹的禍,微軟惹的禍。
為 了識別 Unicode 文件,Microsoft 建議所有的 Unicode 文件應該以 ZERO WIDTH NOBREAK SPACE字元開頭。這作為一個”特徵符”或”字節順序標記(byte-order mark,BOM)”來識別文件中使用的編碼和字節順序(big-endian或little-endian),具體的對應關係見下表。 | |
#UTF-32, big-endian | |
UTF-32, little-endian | |
UTF-16, big-endian |
UTF-16, little-endian
類別Unix系統中並沒有使用BOM,因為它會破壞現有的ASCII 檔案的語法約定。
相關推薦:
以上是php 生成csv mac下亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!