轉自 http://blog.csdn.net/zcmssd/article/details/6086649php
是因爲輸出的CSV文件中沒有BOM.編碼
什麼是BOM?.net
在UCS 編碼中有一個叫作」ZERO WIDTH NO-BREAK SPACE」的字符,它的編碼是FEFF。而FFFE在UCS中是不存在的字符,因此不該該出如今實際傳輸中。UCS規範建議咱們在傳輸字節流前,先傳輸字符」ZERO WIDTH NO-BREAK SPACE」。這樣若是接收者收到FEFF,就代表這個字節流是Big-Endian的;若是收到FFFE,就代表這個字節流是Little-Endian的。所以字符」ZERO WIDTH NO-BREAK SPACE」又被稱做BOM。
UTF-8不須要BOM來代表字節順序,但能夠用BOM來代表編碼方式。字符」ZERO WIDTH NO-BREAK SPACE」的UTF-8編碼是EF BB BF。因此若是接收者收到以EF BB BF開頭的字節流,就知道這是UTF-8編碼了。
Windows就是使用BOM來標記文本文件的編碼方式的。blog
那麼如何在PHP中輸出BOM呢?get
在全部內容輸出以前it
print(chr(0xEF).chr(0xBB).chr(0xBF));class