System.Text.Encoding.UTF8 是一個靜態實例,它省略了 BOM,而 new UTF8Encoding(false) 創建的實例是含有 BOM 的。
BOM,即 Byte Order Mark,也即字節流標記,它是用來讓應用程序識別所用的編碼的。UTF-8 的 BOM 是 0xEFBBBF。
public UTF8Encoding(bool encoderShouldEmitUTF8Identifier),可以看出,如果我們指定參數為 false,表示不省略 BOM;如果為 true,則和 Encoding.UTF8 一樣了。注意,在 msdn 上似乎把這個參數的意思解釋反了。有興趣的朋友可以看一看:http://msdn.microsoft.com/zh-cn/community/s064f8w2.aspx。