UTF 8編碼中BOM的檢測與刪除

2021-05-25 10:31:07 字數 616 閱讀 8685

所謂bom,全稱是byte order mark ,它是乙個unicode字元,通常出現在文字的開頭,用來標識位元組序(big/little endian),除此以外還可以標識編碼(utf-8/16/32),如果出現在文字中間,則解釋為zero width no-break space 。

注:unicode相關知識的詳細介紹請參考utf-8, utf-16, utf-32 & bom 。

對於utf-8/16/32而言,它們名字中的8/16/32指的是編碼單位是多少位的,也就是說,它們的編碼單位分別是8/16/32位,換算成位元組就是1/2/4位元組,如果是多位元組,就要牽扯到位元組序,utf-8以單位元組為編碼單位,所以不存在位元組序。

utf-8主要的優點是可以相容ascii,但如果使用bom的話,這個好處就蕩然無存了,除此以外,bom的存在還可能引發一些問題,比如下面錯誤便都有可能是bom導致的:

在詳細討論utf-8編碼中bom的檢測與刪除問題前,不妨先通過乙個例子熱熱身:

如上所示,前三個位元組分別是357、273、277,這就是八進位制的bom。

如上所示,前三個位元組分別是ef、bb、bf,這就是十六進製制的bom。

如何檢測utf-8編碼中的bom呢?

如何刪除utf-8編碼中的bom呢?

utf 8與utf 8無BOM的區別

utf 8 8 bit unicode transformation format 是一種針對unicode的可變長度字元編碼,又稱萬國碼。bom byte order mark,位元組序標記 utf 8不需要bom來表明位元組順序,但可以用bom來表明編碼方式。字元 zero width no b...

utf 8與utf 8 無BOM 的區別

bom byte order mark utf 8 bom又叫 utf 8 簽名,其實 utf 8 的bom對uft 8沒有作用,是為了支援utf 16,utf 32才加上的bom,bom簽名的意思就是告訴編輯器當前檔案採用何種編碼,方便編輯器識別,但是bom雖然在編輯器中不顯示,但是會產生輸出,就...

utf 8與utf 8 bom的區別

在utf 8編碼檔案中bom在檔案頭部,占用三個位元組,用來標識該檔案屬於utf 8編碼,現在已經有很多軟體識別bom頭,但還是有些不能識別bom頭,比如php就不能識別bom頭,這也就是用記事本編輯utf 8編碼的php檔案後,就會報錯的原因。在windows環境下,用記事本開啟任何乙個文字檔案,...