在VS中,使用高級(jí)保存選項(xiàng)功能的時(shí)候,我們將會(huì)發(fā)現(xiàn)UTF8有兩種格式,一個(gè)是帶簽名的UTF8,一個(gè)是無(wú)簽名的UTF8。
那么這兩種的格式有什么區(qū)別呢?
帶簽名的UTF8:
帶簽名的UTF8,是在生成的文件中,在文件的開頭使用UTF8標(biāo)志,這樣在下次使用編輯器編輯的時(shí)候,編輯器能準(zhǔn)確的識(shí)別當(dāng)前文件的編碼格式,并做正確的解碼。
無(wú)簽名的UTF8:
相反,無(wú)簽名的UTF8是在保存的時(shí)候,不再文件頭部寫入文件的編碼格式。
那么文件編碼需要消耗多少空間呢? —— 答案是3個(gè)字節(jié)。
因此,在一般使用過(guò)程中,我們建議使用帶簽名的UTF8格式來(lái)保存文件。在硬盤如此廉價(jià)的今天,你不會(huì)省這3個(gè)字節(jié)吧?
=====================分割線=========================
補(bǔ)圖:

=====================分割線=========================
再次補(bǔ)充,關(guān)于BOM的處理,此文還是有些欠考慮,但是只是非常簡(jiǎn)單的想處理掉手中出現(xiàn)的問(wèn)題,并記錄解決方案。這里謝謝choury的嚴(yán)謹(jǐn)提醒。
BOM(BYTE ORDER MARK)只是文件的一個(gè)可選項(xiàng),有很多軟件并未提供對(duì)BOM的支持,因此此類軟件如果打開含有BOM數(shù)據(jù)的文件時(shí),會(huì)將此數(shù)據(jù)作為數(shù)據(jù)內(nèi)容本身進(jìn)行處理。如果在程序中,可能會(huì)作為程序內(nèi)容來(lái)解析,這樣有些程序在遷移的時(shí)候就會(huì)出現(xiàn)問(wèn)題。在涉及到程序多處多平臺(tái)遷移的時(shí)候,一般建議慎重考慮是否啟用帶簽名的UTF8 格式。那么如何確定自己的文件UTF-8格式是帶BOM的呢?
最簡(jiǎn)單的方法就是用二進(jìn)制查看文件,看文件起始是否是EF BB BF;其次,也可以用DW看看是否是包含簽名BOM的。
如果你不想使用帶簽名BOM格式的UTF8文件格式保存文件,你可以將文件在二進(jìn)制下用可見字符替換掉起始的三個(gè)字節(jié),而后在普通的文本編輯中刪除該可見字符即可。 —— UltraEdit32 可以試試,如果你沒(méi)有更好的工具的話。