bom是什麼
unicode的學名是"universal multiple-octet coded character set",簡稱為ucs。ucs可以看作是"unicode character set"的縮寫。在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(即byte order mark)。
utf-8 bom頭又是什麼
utf-8以位元組為編碼單元因此不需要 bom 來表明位元組順序,但可以用 bom 來表明編碼方式。字元 「zero width no-break space」 的 utf-8 編碼是 ef bb bf。所以如果接收者收到以 ef bb bf 開頭的位元組流,就知道這是 utf-8編碼了。
因此utf-8編碼的字串開頭處的三個bytes 0xef,0xbb,0xbf就稱為utf-8 bom頭。
UTF8 bom問題的研究
當儲存文字檔案為utf 8 bom時,在內容的開頭會多出3個位元組 ef bb bf 它是用來標示這個文件就是utf 8編碼的文件,可以防止文字編輯器編碼解發布錯。但是多出來的3個位元組也會惹些麻煩。例如 session start 在session cookie使用前,不能有任何輸出,空行空格都不...
utf 8與utf 8 bom的區別
在utf 8編碼檔案中bom在檔案頭部,占用三個位元組,用來標識該檔案屬於utf 8編碼,現在已經有很多軟體識別bom頭,但還是有些不能識別bom頭,比如php就不能識別bom頭,這也就是用記事本編輯utf 8編碼的php檔案後,就會報錯的原因。在windows環境下,用記事本開啟任何乙個文字檔案,...
utf8與utf8 bom的區別
utf8與utf8 bom的區別 首先建立檔案1.txt,2.txt,其次利用vim修改2.txt的編碼格式為utf8 bom 去掉utf 8 bom set nobomb 保留utf 8 bom set bomb 最後利用vim xxd顯示文字的十六進製制表示 在vim的命令狀態下,xxd 將當前...