1. 程式人生 > >VS_UTF8帶不帶簽名有什麼區別?

VS_UTF8帶不帶簽名有什麼區別?

內容摘自以下大佬的部落格
阿里雲
Jim
xxinggup
雪秀


帶簽名也就是帶 BOM 資訊,不帶簽名就是不帶 BOM。
BOM, Byte Order Mark,也即位元組流標記,它是用來讓應用程式識別所用的編碼的。UTF8 的 BOM 是0xEFBBBF。


帶簽名的UTF8:
帶簽名的UTF8,是在生成的檔案中,在檔案的開頭使用UTF8標誌,這樣在下次使用編輯器編輯的時候,編輯器能準確的識別當前檔案的編碼格式,並做正確的解碼。
無簽名的UTF8:
相反,無簽名的UTF8是在儲存的時候,不再檔案頭部寫入檔案的編碼格式。
那麼檔案編碼需要消耗多少空間呢。 —— 是3個位元組。


BOM(BYTE ORDER MARK)只是檔案的一個可選項,有很多軟體並未提供對BOM的支援,因此此類軟體如果開啟含有BOM資料的檔案時,會將此資料作為資料內容本身進行處理。如果在程式中,可能會作為程式內容來解析,這樣有些程式在遷移的時候就會出現問題。在涉及到程式多處多平臺遷移的時候,一般建議慎重考慮是否啟用帶簽名的UTF8 格式


那麼如何確定自己的檔案UTF-8格式是帶BOM的呢?
最簡單的方法就是用二進位制檢視檔案,看檔案起始是否是EF BB BF;其次,也可以用DW看看是否是包含簽名BOM的。
如果你不想使用帶簽名BOM格式的UTF8檔案格式儲存檔案,你可以將檔案在二進位制下用可見字元替換掉起始的三個位元組,而後在普通的文字編輯中刪除該可見字元即可。推薦的軟體 EditPlus,sublime即可實現相應的操作


中文版的預設編碼格式是gb2312,英文版的是UTF8。如果要想儲存成其他的編碼格式,可以在“檔案”-〉“高階儲存選項”中更改。