什麼是BOM?編碼
在UCS 編碼中有一個叫作」ZERO WIDTH NO-BREAK SPACE」的字符,它的編碼是FEFF。而FFFE在UCS中是不存在的字符,因此不該該出如今實際傳輸中。UCS規範建議咱們在傳輸字節流前,先傳輸 字符」ZERO WIDTH NO-BREAK SPACE」。it
這樣若是接收者收到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來標記文本文件的編碼方式的。di
那麼如何在PHP中輸出BOM呢?文件
在全部內容輸出以前:
print(chr(0xEF).chr(0xBB).chr(0xBF));字符